我用C ++进行了快速排序,但效果不佳。例如,如果我有一个{5、3、4、6、7}数组,则结果将为{0、3、4、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;
}
答案 0 :(得分:-1)
第27行:应该是
qsort(a, 0, n-1);