我尝试开发c ++程序,快速排序。在for (int row = 0; row < array.length; row++) {
for (int col = 0; col < array[row].length; col++) {
if (!(row >= array.length) && !(col >= array[row].length - 1)) {
array[row][col] = array[row][col + 1];
}
}
}
中,第一个菜单是:
int main()
用户选择或输入1/2/3后,用户需要选择:
1. 100 elements
2. 500 elements
3. 1000 elements.
4. Quit
问题是我的代码太长了,因为我没有简单,我不知道该怎么做。我使用相同的方法。
用于排序100个元素:
加载数据&gt;&gt;打印未排序的&gt;&gt;快速排序&gt;&gt;打印排序。这是枢轴 第一个元素。
然后对于pivot随机元素,我需要再次加载相同的100 元素数据并再次执行相同操作,加载数据&gt;&gt;打印 unsorted&gt;&gt; quicksort&gt;&gt; print sorted。
同样适用于500和1000个元素。很难看到我这样的代码。
3. Pivot: First Element
4. Pivot: Random element.
答案 0 :(得分:1)
我建议您先采用2个变量来采取DRY方式:
1-输入数量
2-枢轴选择
cout<<endl<<endl;
cout << "\n QUICK SORT(RANDOM NUMBER)\n";
cout << " ---------------------------------\n";
cout << "\n 1.100 elements\n 2.500 elements\n 3.1000 elements\n 4.Quit\n";
cout<< " ---------------------------------"<<endl;
cout<<" Enter your choice : ";
cin>>ch;
cout<<endl;
cout << "\n 3.Pivot : First Element \n 4.Pivot: Random element\n";
cout<< " ---------------------------------"<<endl;
cout<<" Enter your choice : ";
cin>>ch2;
cout<<endl;
string inputSize;
switch(ch)
{
case 1: inputSize="100";
...
}
string pivotSelection;
switch(ch2)
{
case 1: pivotSelection="FirstElement";
...
}
然后重写您的代码块以使用这些变量而不是硬编码所有内容。
例如,您可以file.open("500.txt");
file.open( inputSize + ".txt");
然而,使用此方法,您必须注意在C ++中,您无法创建可变大小的堆栈分配数组。例如,您需要int inputs[sizeOfInput];
int * inputs = malloc(sizeof(int) * sizeOfInput);