我的c\c++之旅(三)——堆排序
2016-05-09 14:37
246 查看
堆排序
#define LEFT(i) (2 * (i) + 1) void Max_Heapify(int *sequence, int n, int i) { int child, tmp; for(tmp = sequence[i]; LEFT(i) < n; i = child) { child = LEFT(i); if(child != n-1 && sequence[child+1] > sequence[child]) child++; if(tmp < sequence[child]) sequence[i] = sequence[child]; else break; } sequence[i] = tmp; } void Build_Max_Heap(int *sequence, int n) { int i; for(i = n/2; i >= 0; i--) Max_Heapify(sequence, n, i); } void Heap_Sort(int *sequence, int n) { int i; Build_Max_Heap(sequence, n); for(i = n-1; i > 0; i--) { int tmp = sequence[0]; sequence[0] = sequence[i]; sequence[i] = tmp; Max_Heapify(sequence, i, 0); } }
阅读更多
相关文章推荐
- 堆排序 c++
- 堆排序,C++模板编程
- c++排序part2:堆排序、快速排序、归并排序
- 算法导论-第六章-堆排序:基于最大堆的排序C++实现
- [C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序
- c++实现堆排序
- 迅雷四川大学(整个西南地区)C++第二轮笔试题(详解答案) ---堆排序
- c++实现堆排序
- c++学习之--排序5-堆排序
- 堆排序(C++实现)
- 堆排序 C++
- c++ 堆排序 源代码
- 算法数据结构C++实现8 堆排序 难点分析
- c++(堆排序)
- 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析(好戏在后面,有图有真相)
- c/c++实现堆排序
- 算法设计之堆的实现与堆排序实现(C++实现)
- c++实现堆排序及运行实例结果
- C++实现几种常用的时间复杂度为O(nlogn)的排序方法:归并排序、快速排序、堆排序、希尔排序
- 【算法导论】C++参考源码之堆排序中的优先级队列