7-4 快速排序 分数 25 全屏浏览题目 切换布局 作者 朱允刚 单位 吉林大学 给定包含n个元素的整型数组a[1],a[2],...,a[n],利用快速排序算法对其进行递增排序,请输出排序过程,即每次Partition之后的数组。最后输出排序后的数组。每次选择所处理的子数组的第一个元素作为基准元素。 输入格式: 输入为两行,第一行为一个整数n(1<n≤1000),表示数组长度。第二行为n个空格间隔的整数,表示待排序的数组。 输出格式: 输出为若干行,每行依次输出Partition后的数组,每个元素后一个空格。最后一行输出排序后的数组。 输入样例: 5 4 5 3 2 1 输出样例: 2 1 3 4 5 1 2 3 4 5 1 2 3 4 5 用C语言实现完整代码
时间: 2024-03-23 15:41:52 浏览: 204
```c
#include <stdio.h>
void quick_sort(int a[], int l, int r) {
if (l < r) {
int i = l, j = r, x = a[i];
while (i < j) {
while (i < j && a[j] >= x) j--;
if (i < j) a[i++] = a[j];
while (i < j && a[i] < x) i++;
if (i < j) a[j--] = a[i];
}
a[i] = x;
for (int k = 0; k < r - l + 1; k++) {
printf("%d%c", a[l + k], k == r - l ? '\n' : ' ');
}
quick_sort(a, l, i - 1);
quick_sort(a, i + 1, r);
}
}
int main() {
int n, a[1005];
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
quick_sort(a, 1, n);
for (int i = 1; i <= n; i++) {
printf("%d%c", a[i], i == n ? '\n' : ' ');
}
return 0;
}
```
阅读全文