C 语言中的快速排序算法250
快速排序是一种高效的排序算法,它通过递归地将一个数组划分为较小和较大的子数组(称之为“分区”)来工作。这种方法使用了一个称为“枢纽”的元素,该元素将数组划分为两部分:小于枢纽的元素的子数组,以及大于或等于枢纽的元素的子数组。
快速排序的伪代码如下:```
quicksort(array, left, right) {
if (left < right) {
pivot = partition(array, left, right)
quicksort(array, left, pivot - 1)
quicksort(array, pivot + 1, right)
}
}
partition(array, left, right) {
pivot = array[right]
i = left - 1
for (j = left to right - 1) {
if (array[j] < pivot) {
swap(array[i + 1], array[j])
i++
}
}
swap(array[i + 1], array[right])
return i + 1
}
```
在 C 语言中实现快速排序算法:```c
#include
// Partition the array array[left...right] around the pivot element
int partition(int array[], int left, int right) {
int pivot = array[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (array[j] < pivot) {
i++;
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
int temp = array[i + 1];
array[i + 1] = array[right];
array[right] = temp;
return i + 1;
}
// Recursively sort the array array[left...right]
void quicksort(int array[], int left, int right) {
if (left < right) {
int pivot_index = partition(array, left, right);
quicksort(array, left, pivot_index - 1);
quicksort(array, pivot_index + 1, right);
}
}
// Print the sorted array
void printArray(int array[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("");
}
int main() {
int array[] = {10, 7, 8, 9, 1, 5};
int size = sizeof(array) / sizeof(array[0]);
quicksort(array, 0, size - 1);
printArray(array, size);
return 0;
}
```
时间复杂度:快速排序的时间复杂度在平均情况下为 O(n log n),在最坏情况下为 O(n^2)。
空间复杂度:快速排序的空间复杂度为 O(log n) 由于递归调用。
优点:* 快速且高效,在平均情况下达到 O(n log n) 的复杂度。
* 不需要额外的存储空间,因为它就地排序。
* 适用于大量数据集。
缺点:* 最坏情况下时间复杂度为 O(n^2)。
* 对于几乎排好序或反向排好序的数组性能较差。
2024-11-28
上一篇:用 C 语言获取宿舍人员姓名
下一篇:C 语言库函数:全面指南
Java数组详解:从创建、初始化到动态扩容的全面指南
https://www.shuihudhg.cn/134428.html
PHP高效解析JSON字符串数组:从入门到精通与实战优化
https://www.shuihudhg.cn/134427.html
Java数据读取循环:核心原理、实战技巧与性能优化全解析
https://www.shuihudhg.cn/134426.html
PHP 文件包含深度解析:从基础用法到安全实践与现代应用
https://www.shuihudhg.cn/134425.html
Python编程考试全攻略:代码实现技巧、高频考点与实战演练
https://www.shuihudhg.cn/134424.html
热门文章
C 语言中实现正序输出
https://www.shuihudhg.cn/2788.html
c语言选择排序算法详解
https://www.shuihudhg.cn/45804.html
C 语言函数:定义与声明
https://www.shuihudhg.cn/5703.html
C语言中的开方函数:sqrt()
https://www.shuihudhg.cn/347.html
C 语言中字符串输出的全面指南
https://www.shuihudhg.cn/4366.html