数据结构算法学习-排序-堆排序
排序
将一组有顺序的元素按大小(只要定义可以返回true或false的比较关系,非一定数值比较)重新调整顺序。
堆排序
堆排序利用堆这种结构,把要排序的序列插入数组,保证最小堆的性质(父节点小于子节点),依次删除最小元素(在位置0上),并调整保证最小堆性质。
算法实现
#include <stdio.h> #include <stdlib.h> #include "elr_heap_int.h" #include "elr_sort_heap.h" long long int* elrSortHeap(long long int* arr, int len) { int i; pHeap tmp; if (arr) { tmp = elrInitHeap(len); for (i = 0; i < len; i++) { elrPushHeap(tmp, arr[i]); } for (i = 0; i < len; i++) { arr[i] = elrDeleteHeapMin(tmp); } elrFreeHeap(tmp); } return arr; }
调试调用
#include <stdio.h> #include <stdlib.h> #include "elr_sort_heap.h" int main(int argc, char **argv){ int i; long long int arr[] = {6, 2, 4, 1, 3, 5, 0, 8, 9, 7}; elrSortHeap(arr, 10); printf("%d\n", (int)(sizeof(arr) / sizeof(long long int))); for (i = 0; i < 10; i++) { printf("%lld ", arr[i]); } printf("\n"); return 0; }
输出
insert:6 insert:2 6 insert:2 6 4 insert:1 2 4 6 insert:1 2 4 6 3 insert:1 2 4 6 3 5 insert:0 2 1 6 3 5 4 insert:0 2 1 6 3 5 4 8 insert:0 2 1 6 3 5 4 8 9 insert:0 2 1 6 3 5 4 8 9 7 delmin:1 2 4 6 3 5 7 8 9 delmin:2 3 4 6 9 5 7 8 delmin:3 6 4 8 9 5 7 delmin:4 6 5 8 9 7 delmin:5 6 7 8 9 delmin:6 8 7 9 delmin:7 8 9 delmin:8 9 delmin:9 0 1 2 3 4 5 6 7 8 9
相关推荐
ELEMENTS爱乐小超 2020-07-04
sunjunior 2020-05-10
shenwenjie 2020-05-03
shawsun 2020-04-17
ustbfym 2020-04-09
rein0 2020-04-08
shawsun 2020-03-28
hanyujianke 2020-01-04
shawsun 2019-12-15
ustbfym 2019-12-09
Happyunlimited 2019-12-02
燕哥带你学算法 2019-11-19
qscool 2019-11-08
qscool 2019-10-28
nimeijian 2019-10-21
sxyyu 2019-10-21