第一版不知为何一直报错,代码如下
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