手写快速排序算法,并自己编写main函数,输入无序数组(8,7,6,3,5,4,2,10,9,1},输出排序后的有序序列。 void quickSort(int arr[], int low, int
时间: 2024-12-19 07:26:10 浏览: 11
手写快速排序算法是一种常用的排序算法,它基于分治策略。以下是快速排序的基本步骤:
1. 选择一个基准元素(pivot),通常选择第一个元素或最后一个元素。
2. 将数组分为两个部分,一部分包含所有小于基准的元素,另一部分包含所有大于等于基准的元素。
3. 对这两部分递归地应用快速排序算法。
4. 合并已排序的两部分。
以下是使用 C 语言实现的快速排序,包括 main 函数用于测试排序无序数组:
```c
#include <stdio.h>
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // 基准元素
int i = (low - 1); // Index of smaller element
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) { // 如果当前元素小于基准
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]); // 将基准放到正确的位置
return (i + 1);
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1); // 递归对左半部分进行排序
quickSort(arr, pi + 1, high); // 递归对右半部分进行排序
}
}
int main() {
int arr[] = {8, 7, 6, 3, 5, 4, 2, 10, 9, 1};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
quickSort(arr, 0, n - 1);
printf("\nSorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
当你运行这个程序,会得到排序后的有序数组:`1 2 3 4 5 6 7 8 9 10`。
阅读全文