快速排序中遇到的小错误
void qsort(int a[], int lo, int hi)
{
int x = a[lo + ((hi - lo)>>1)];
int i = lo;
int j = hi;
int temp;
do
{
while (a[i]<x) i++;
while (a[j]>x) j--;
if(i <= j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;j--;
}
}while(i<=j);
if (i < hi) qsort(a,i,hi);
if (j > lo) qsort(a,lo,j);
}
代码运行不通过
void qsort(int a[], int lo, int hi)
{
int i = lo;
int j = hi;
int x = a[i + ((j - i)>>1)];
int temp;
do
{
while (a[i]<x) i++;
while (a[j]>x) j--;
if(i <= j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;j--;
}
}while(i<=j);
if (i < hi) qsort(a,i,hi);
if (j > lo) qsort(a,lo,j);
}
代码运行通过
由于在函数体中hi和lo属于该函数体的外部变量,在递归运算时产生错误;