2020-10-20

it2023-09-03  70

快速排序中遇到的小错误

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属于该函数体的外部变量,在递归运算时产生错误;

最新回复(0)