题目:请阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一个数作为基准值,然后根据基准值进行划分,从而将待排序列划分为不大于基准值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和右子序列分别进行快速排序,最终得到非递减的有序序列。
[C代码]
```c
#include
void quicksort(int a[], int n) {
int i, j;
int pivot = a[0]; // 设置基准值
i = 0; j = n-1;
while (i < j) {
// 大于基准值者保持在原位置
while (i < j && _______ ) j--;
if (i < j) { a[i] = a[j]; i++; }
// 不大于基准值者保持在原位置
while (i < j && _______ ) i++;
if (i < j) { a[j] = a[i]; j--; } // 注意这里的j--是错误的,应该是i++
}
a[i] = pivot; // 基准元素归位
if (i > 0) quicksort(_______ ); // 递归地对左子序列进行快速排序
if (n - i - 1 > 0) quicksort(_______ ); // 递归地对右子序列进行快速排序
}
int main() {
int i, arr[] = {23, 56, 9, 75, 18, 42, 11, 67};
quicksort(arr, sizeof(arr)/sizeof(int)); // 调用quicksort对数组arr[]进行排序
for (i = 0; i < sizeof(arr)/sizeof(int); i++) printf("%d\t", arr[i]); // 输出排序后的数组元素
return 0;
}
```