这个快速排序代码有什么问题我输入错误的输出结果:
#include<stdio.h>
void quick_sort(int A[], int start, int end) {
int pIndex;
if (start < end) {
pIndex=partion(A,start,end);
quick_sort(A,start,pIndex-1);
quick_sort(A,pIndex+1,end);
}
}
int partion(int A[], int start, int end) {
int i, temp, pIndex = start;
int pivot = A[end];
for (i = start; i < end; i++) {
if (A[i] <= pivot) {
temp = A[i];
A[i] = A[pIndex];
A[pIndex] = A[i];
pIndex++;
}
}
temp = A[pIndex];
A[pIndex] = A[end];
A[end] = temp;
return pIndex;
}
int main() {
int A[100], size, i;
scanf("%d\n", &size);
for (i = 0; i < size; i++) {
scanf("%d", &A[i]);
}
quick_sort(A, 0, size-1);
for (i = 0; i < size; i++) {
printf("%d\t", A[i]);
}
return 0;
}
我输出错误输出: Output
我该怎么做才能按升序排序
答案 0 :(得分:5)
你的意思是A[pIndex]=A[i];
还是应该A[pIndex]=temp;
- 这应该是一次交换操作。