下列已给出部分程序代码,请补全(只有quickSort函数需要补全)。 #include <stdio.h> #define LENTH 10 int AdjustArray(int s[], int l, int r); // 返回调整后基准数的位置d的函数 void quickSort(int s[], int l, int r); // 快速排序的主函数 int main() { int arr[LENTH], i; for (i=0; i<LENTH; i++) scanf("%d", &arr[i]); quickSort(arr, 0, LENTH-1); for (i=0; i<LENTH; i++) printf("%d ", arr[i]); return 0; } // 返回调整后基准数的位置 int AdjustArray(int s[], int l, int r) { int i = l, j = r; int x = s[l]; // s[l]即s[i]就是第一个坑 while (i < j) { // 从右向左找小于x的数来填s[i] while (i < j && s[j] >= x) j--; if (i < j) s[i++] = s[j]; // 将s[j]填到s[i]中,s[j]就形成了一个新的坑 // 从左向右找大于或等于x的数来填s[j] while (i < j && s[i] < x) i++; if (i < j) s[j--] = s[i]; // 将s[i]填到s[j]中,s[i]就形成了一个新的坑 } // 退出时,i等于j,将x填到这个坑中 s[i] = x; return i; }
时间: 2024-01-28 10:03:26 浏览: 121
Java 快速排序(QuickSort)原理及实现代码
void quickSort(int s[], int l, int r) {
if (l < r) {
int i = AdjustArray(s, l, r); // 调整数组,将s[l]放到正确的位置上
quickSort(s, l, i - 1); // 递归调用
quickSort(s, i + 1, r); // 递归调用
}
}
在 quickSort 函数中,我们首先判断 l 是否小于 r,如果是,则调用 AdjustArray 函数进行调整,将 s[l] 放到其正确的位置上。然后递归调用 quickSort 函数对左右两部分进行快速排序,直到整个序列有序为止。
阅读全文