概述
自己写了一个快速排序,但是测试的时候发现:如果待排序列有相同数字的话,那么排序结果就出错,没有发现哪里出问题了,哪位大侠发现错误的话请指出来,或者推荐一下讲解如何调试的书籍,感激不尽!
代码如下:
#include <iostream>
int * Quick_Sort(int array[], int low, int high);
void Show_Array(int array[], int array_size);
int Partition( int array[], int low, int high );
int main()
{
std::cout << "Please enter the size of array you want: ";
int size;
std::cin >> size;
int *array = new int[size];
std::cout << "Please enter " << size << " element(s):n";
for(int i = 0; i < size; i++)
std::cin >> array[i];
Quick_Sort( array, 0, size-1);
Show_Array( array, size);
delete []array;
std::cin.get();
std::cin.get();
}
/QuickSort
int * Quick_Sort(int array[], int low, int high)
{
if( low < high )
{
int pivot_location = Partition(array, low, high);
Quick_Sort(array, low, pivot_location-1 );
Quick_Sort(array, pivot_location+1, high );
}
return array;
}
int Partition( int array[], int low, int high ) //返回轴心的位置,被Quick_Sort调用
{
int pivot_key = array[low]; //默认将数组第一个元素作为轴心
while (low < high )
{
while( low < high && array[high] > pivot_key )
{
--high;
}
array[low] = array[high];
while( low < high && array[low] < pivot_key )
{
++low;
}
array[high] = array[low];
}
array[low] = pivot_key; //每次至少一个元素会排到最终的位置
return low;
}
void Show_Array(int array[], int array_size)
{
std::cout << "the array is:n";
for ( int i = 0; i < array_size; ++i )
std::cout << array[i] << " ";
std::cout << std::endl;
}
最后
以上就是执着棉花糖为你收集整理的求助:快速排序哪里出问题了?的全部内容,希望文章能够帮你解决求助:快速排序哪里出问题了?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复