求助:快速排序哪里出问题了?

来源:互联网 发布:淘宝发货前申请了退款 编辑:程序博客网 时间:2024/05/21 16:56

自己写了一个快速排序,但是测试的时候发现:如果待排序列有相同数字的话,那么排序结果就出错,没有发现哪里出问题了,哪位大侠发现错误的话请指出来,或者推荐一下讲解如何调试的书籍,感激不尽!


代码如下:

#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();}/QuickSortint * 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;}


0 0
原创粉丝点击