c语言实现大根堆排序算法
时间: 2023-08-04 15:21:59 浏览: 35
下面是C语言实现大根堆排序算法的示例代码:
```c
#include <stdio.h>
// 调整大根堆
void adjustHeap(int arr[], int i, int len) {
int temp = arr[i];
for (int k = 2 * i + 1; k < len; k = 2 * k + 1) {
if (k + 1 < len && arr[k] < arr[k + 1]) {
k++;
}
if (arr[k] > temp) {
arr[i] = arr[k];
i = k;
} else {
break;
}
}
arr[i] = temp;
}
// 大根堆排序
void heapSort(int arr[], int len) {
// 构建大根堆
for (int i = len / 2 - 1; i >= 0; i--) {
adjustHeap(arr, i, len);
}
// 交换堆顶元素与堆底元素,并重新构建大根堆
for (int i = len - 1; i >= 0; i--) {
int temp = arr[i];
arr[i] = arr[0];
arr[0] = temp;
adjustHeap(arr, 0, i);
}
}
int main() {
int arr[] = {4, 6, 8, 5, 9, 1, 2, 3, 7};
int len = sizeof(arr) / sizeof(arr[0]);
heapSort(arr, len);
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这个示例代码中,adjustHeap函数实现了对堆的调整,heapSort函数实现了对整个序列的排序操作。在main函数中,我们定义了一个待排序的数组arr,并通过调用heapSort函数对其进行排序。最终输出排序后的结果。
相关推荐
















