快速排序c ++,int main()中的代码实现

时间:2015-12-14 21:32:26

标签: c++ quicksort

我尝试开发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.

1 个答案:

答案 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);