用C++快速排序.几乎正确,但结果发生了变化



我用C++做了一个快速排序,但效果不好。例如,如果我有一个{5,3,4,6,7}的数组,结果将是{0,3,5,6}。我找不到原因,因为我以前在Pascal中使用过同样的方法,而且效果很好。

#include <iostream>
using namespace std;
void qsort(int (&ary)[10000], int l, int r){
int i = l, j = r, mid = ary[(l + r) / 2];
while (i <= j){
while (ary[i] < mid) i ++;
while (ary[j] > mid) j --;
if (i <= j){
int temp = ary[i];
ary[i] = ary[j];
ary[j] = temp;
i ++; j --;
}
}
if (i < r) qsort(ary, i, r);
if (l < j) qsort(ary, l, j);
}
int main(){
int n;
int a[10000];
cin >> n;
for (int i = 0; i < n; i ++){
cin >> a[i];
}
qsort(a, 0, n);
for (int i = 0; i < n; i ++){
cout << a[i] << ' ';
}
return 0;
}

第27行:应该是qsort(a, 0, n-1);

相关内容

最新更新