再补充一个快速排序的代码 留做备用 与楼主的思路也更加一致
程序代码:#include
#define LEN 10
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
int part(int *arr, int len) {
int i = 0, idx = 0, val = *arr;
swap(arr, arr + len - 1);
for(; i < len; i++) {
if(*(arr + i) < val) {
swap(arr + i, arr + idx);
idx++;
}
}
swap(arr + len - 1, arr + idx);
return idx;
}
void prt(int *arr, int len) {
int i = 0;
for(; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
void qSort(int *arr, int len) {
int idx ;
if(len > 1) {
idx = part(arr, len);
qSort(arr, idx);
qSort(arr + idx + 1, len - idx - 1);
}
}
int main(void) {
int i = 0, arr[LEN] = {7, 4, 2, 5, 1, 5, 3, 1, 7, 6};
/*
for(; i < LEN; i++){
scanf("%d", arr + i);
}
*/
qSort(arr, LEN);
prt(arr, LEN);
return 0;
}