读书人

帮忙看下这个快排程序,该怎么解决

发布时间: 2012-05-01 12:48:58 作者: rapoo

帮忙看下这个快排程序

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 ;
[解决办法]
凡是递归都必须有结束的条件,不然就是错误的。
[解决办法]
探讨

递归的 终止条件呢?

Qsort递归的开始加上:
if(left>=right)
return ;

读书人网 >C语言

热点推荐