快速排序算法
在一本书上看到一个快速排序的一个解法,写完整试验了一下,排序没能成功
int partition(int A[],int low,int high){
int temp;
int pivot = a[low];
int i = low+1;
int j = high;
while(i<j) {
while(i<j && pivot < A[j])j--;
while(i<j && A[i] < pivot) i++;
if(i<j){
temp = A[i];
A[j] = A[i];
A[i] = temp
}
}
A[low] = A[i];
A[i] = pivot;
return i;
}
如用这个序列 A[10]={0,2,3,6,1,5,4,8,7,9} ,这个算法的错误在于没有将A[low]与A[low+1],最后直接执行了
A[low] = A[i]; A[i] = pivot;这两步,从而将0和2换个位置,变成2,0 ,6.....,这肯
定是不正确的。