描述 输入一个长度为n(1 ≤ n ≤ 1000)的整数数列。用快速排序算法对这个数列从小到大进行排列,输出排序后的数列; 输入描述 共输入两行,第一行包含整数n。第二行包含n个整数(用空格隔开),表示这个数组的元素; - 输入样例: 6 3 1 2 4 5 7 输出描述 输出一行排序后的数组元素,元素之间用空格隔开; - 输出样例: 1 2 3 4 5 7。使用C语言实现
时间: 2024-02-17 09:02:32 浏览: 82
以下是使用 C 语言实现的快速排序算法:
```c
#include <stdio.h>
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[right]; // 取最后一个元素作为枢轴
int i = left, j = right - 1;
while (i <= j) {
while (i <= j && arr[i] <= pivot) {
i++;
}
while (i <= j && arr[j] >= pivot) {
j--;
}
if (i < j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
arr[right] = arr[i];
arr[i] = pivot;
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
int main() {
int n;
scanf("%d", &n);
int arr[1000];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
quick_sort(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
我们使用快速排序算法对输入的整数数组进行排序。快速排序算法的基本思路是:先从数列中取出一个数作为基准数,然后将数列中小于基准数的元素放到基准数的左边,大于基准数的元素放到基准数的右边,最后将基准数放到中间。然后递归地对基准数左边的数列和右边的数列进行排序,直到整个数列有序为止。
在本题中,我们取最后一个元素作为基准数,使用双指针的方法进行划分。最后输出排序后的整数数组即可。
阅读全文