快速排序算法c语言的例子
时间: 2024-11-21 18:15:03 浏览: 21
快速排序是一种高效的排序算法,它基于分治策略。以下是C语言的一个基本快速排序算法示例:
```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);
}
}
// 测试快速排序
void printArray(int arr[], int size) {
int i;
for (i=0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int data[] = {9, 7, 5, 11, 12, 2, 14, 3, 10, 6};
int n = sizeof(data) / sizeof(data[0]);
printf("Original array:\n");
printArray(data, n);
quickSort(data, 0, n - 1);
printf("Sorted array using Quick Sort:\n");
printArray(data, n);
return 0;
}
```
这个例子中,`quickSort()` 函数首先检查输入范围是否需要排序,然后选择一个枢轴并将其放置在正确的位置,使得所有比枢轴小的数都在其左边,大于枢轴的数在其右边。接着对左右两边的子数组再递归调用 `quickSort()`。
阅读全文