帮忙看下这个快排程序
- C/C++ code
void QuickSort(int array[],int n){ Qsort(array,0,n-1);}void Qsort(int A[],int left,int right){ int i,j,Pivot; Pivot=Median3(A,left,right); i=left;j=right-1; for( ; ; ) { while(A[++i]<Pivot){} while(A[--j]>Pivot){} if(i<j) swap(&A[i],&A[j]); else break; } swap(&A[i],&A[right-1]); Qsort(A,left,i-1); Qsort(A,i+1,right);}int Median3(int A[],int left,int right){ int Center=left+(right-left)/2; if(A[left]>A[Center]) swap(&A[left],&A[Center]); if(A[left]>A[right]) swap(&A[left],&A[right]); if(A[Center]>A[right]) swap(&A[Center],&A[right]); swap(&A[Center],&A[right-1]); return A[right-1];}编译是没什么问题的,但运行出错,可能是越界?但看了好多次没有啊。高手能不能帮忙看下问题出在哪里。
[解决办法]
递归的 终止条件呢?
Qsort递归的开始加上:
if(left>=right)
return ;
[解决办法]
凡是递归都必须有结束的条件,不然就是错误的。
[解决办法]