堆排序
来源:互联网 发布:西安电子大学网络教育 编辑:程序博客网 时间:2024/06/06 19:11
堆是一种特殊的队列,是一种优先队列:取出的元素顺序是按照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。
堆的两个特性
结构性:用数组表示的完全二叉树
有序性:任意节点的关键字是其子树所有结点的最大值(或最小值)。分别称为最大堆和最小堆。
优先队列的完全二叉树:
最大堆:
最小堆
堆排序其实就是对选择排序的改进
算法1
void Heap_Sort( ElementType A[], int N){ BuildHeap(A); for( i=0; i<N; i++) TmpA[i] = DeleteMin(A); for( i=0; i<N; i++) A[i] = TmpA[i];}
算法2
void Heap_Sort( ElementType A[], int N){ for(i=N/2; i>=0; i--) precDown(a, i , N); for(i=N-1; i>0; i--) { Swap( &A[0], &A[i]); PercDown( A, 0, i); }}
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- Hdu 5876 Sparse Graph bfs 变型最短路
- hdu 2092 整数解
- cartographer源码分析(44)-kalman_filter-pose_tracker.h
- hdu 2095 find your present (2)
- Linux系统调用
- 堆排序
- DPDK之环境抽象层(1)
- 使用kotlin<一>
- of 的用法
- 头结点循环链表
- C语言实现单链表
- hdu 2097 Sky数
- 文件I/O与标准I/O的区别
- 【USACO-2017-OPEN-银组】Paired Up