除了冒泡排序,还有哪些更高效的排序算法可以用在C语言中?
时间: 2024-10-19 18:12:40 浏览: 41
除了冒泡排序,C语言中还有一些更高效的排序算法可以选择,比如:
1. **快速排序** (Quick Sort): 它基于分治策略,通常有平均时间复杂度O(n log n),但在最坏情况下会退化到O(n^2)。不过由于实际性能通常较好,常用于大型数据集。
```c
void quicksort(int arr[], int low, int high) {
if (low < high) {
int pivot_index = partition(arr, low, high);
quicksort(arr, low, pivot_index - 1);
quicksort(arr, pivot_index + 1, high);
}
}
int partition(int arr[], int low, int high) {
// 略...
}
```
2. **归并排序** (Merge Sort): 也是分治法,总是保持O(n log n)时间复杂度,但是需要额外的空间存储中间结果。
```c
void merge_sort(int arr[], int l, int r) {
if (l < r) {
int mid = l + (r - l) / 2;
merge_sort(arr, l, mid);
merge_sort(arr, mid + 1, r);
merge(arr, l, mid, r);
}
}
void merge(int arr[], int l, int m, int r) {
// 略...
}
```
3. **堆排序** (Heap Sort): 利用了堆这种数据结构,同样有O(n log n)时间复杂度,但它是一个原地排序算法,不需要额外空间。
```c
void heapify(int arr[], int n, int i) {
// 略...
}
void heap_sort(int arr[], int n) {
// 略...
}
```
阅读全文