针对“快速排序算法的实现。任意输入20个整数,对这20个整数进行快速排序。要求使用末元素作为划分基准。”问题,给出其算法思想,并使用C语言进行编程
时间: 2024-04-29 21:24:01 浏览: 58
编程实现希尔、快速、堆、归并排序算法,随机产生10000个随机数存入磁盘文件,读取,并将不同排序方法的结果存入文件中(含报告)
5星 · 资源好评率100%
快速排序算法的实现思想:
1. 选取一个元素作为基准值(本题要求使用末元素)。
2. 将序列中的元素分为两部分,小于等于基准值的放在左边,大于基准值的放在右边。
3. 对左右两部分分别进行快速排序,直到序列有序。
C语言代码实现:
```c
#include <stdio.h>
void quickSort(int arr[], int start, int end) {
if (start < end) {
int pivot = arr[end]; // 选取末元素作为基准值
int i = start - 1;
for (int j = start; j <= end - 1; j++) {
if (arr[j] <= pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[end];
arr[end] = temp;
int p = i + 1;
quickSort(arr, start, p - 1);
quickSort(arr, p + 1, end);
}
}
int main() {
int arr[20];
printf("请输入20个整数:\n");
for (int i = 0; i < 20; i++) {
scanf("%d", &arr[i]);
}
quickSort(arr, 0, 19);
printf("快速排序后的结果为:\n");
for (int i = 0; i < 20; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
阅读全文