快速排序的一个小坑

第一版不知为何一直报错,代码如下


int partition(int a[], int low, int high)
{
    int key = a[low];
    while (low < high)
    {
        while (a[high] >= key && low

后来发现,当low==pivot时,下面这句话会有问题:

    quickSort(a, low, pivot - 1);

于是改为:

    if (pivot > low)
        quickSort(a, low, pivot - 1);
    quickSort(a, pivot + 1, high);

仍然不对,最后发现是下面那句也要改:

    if (pivot > low)
        quickSort(a, low, pivot - 1);
    if(pivot

但是书上和网上的标答都没有这么麻烦啊??最后发现:我的递归出口是low=hight,而标答是low>=high,如果这样一改,刚才的两句if也就不需要了:

void quickSort(int a[], int low, int high)
{
    if (low >= high) return;
    int pivot = partition(a, low, high);
    //if (pivot > low)
        quickSort(a, low, pivot - 1);
    //if(pivot

你可能感兴趣的:(快速排序的一个小坑)