堆排序(Heap Sort)
2011-07-02 13:21
381 查看
#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 10 void maxHeapify(int *arr, int i, int size) { int l = (i + 1) * 2 - 1; int r = (i + 1) * 2; int largest, t; if (l + 1 <= size && arr[l] > arr[i]) largest = l; else largest = i; if (r + 1 <= size && arr[r] > arr[largest]) largest = r; if (largest != i) { t = arr[i]; arr[i] = arr[largest]; arr[largest] = t; maxHeapify(arr, largest, size); } } void buildMaxHeap(int *arr, int size) { int i; for (i = size / 2 - 1; i >= 0; i--) maxHeapify(arr, i, size); } void heapSort(int *arr, int size) { buildMaxHeap(arr, size); int i, t; for (i = size - 1; i >= 1; i--) { i = size - 1; t = arr[0]; arr[0] = arr[i]; arr[i] = t; size--; maxHeapify(arr, 0, size); } } int main(int argc, const char *argv[]) { int arr[MAX]; int i; srand((unsigned)time(NULL)); for (i = 0; i < MAX; i++) arr[i] = rand() % MAX; printf("original array :"); for (i = 0; i < sizeof(arr) / sizeof(int); i++) printf("%d ", arr[i]); printf("\n"); heapSort(arr, sizeof(arr) / sizeof(int)); printf("sorted array :"); for (i = 0; i < sizeof(arr) / sizeof(int); i++) printf("%d ", arr[i]); printf("\n"); return 0; }
相关文章推荐
- 图解排序算法及C语言实现之 ------ 堆排序:Heap Sort
- 堆排序(Heapsort)
- 排序算法 之 堆排序(heapsort)
- [Unity][Heap sort]用Unity动态演示堆排序的过程(How Heap Sort Works)
- C++ 堆排序 (HeapSort)
- HeapSort 堆排序 基于伪代码实现
- 堆排序(Heap Sort)
- PHP实现排序堆排序(Heap Sort)算法
- 堆排序Heap_Sort
- 堆排序 Heap Sort
- 堆排序heapsort
- 【JAVA算法】经典排序算法 --堆排序HeapSort
- PHP排序算法之堆排序(Heap Sort)实例详解
- 算法珠玑--再看堆排序(Heap Sort)的实现
- 算法----堆排序(heap sort)
- 堆排序(heap sort)总结
- 堆排序(Heap Sort)算法的实现
- HeapSort(堆排序)
- 堆排序(Heap Sort)
- 算法:堆排序(Heap Sort)