C++实现建立大根堆
2012-10-28 22:39
211 查看
#include <iostream> using namespace std; void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } void adjust_heap(int *Array, int index, int len) { int cur = index; int right_child = 2 * (cur + 1); while(right_child < len) { if(Array[right_child] < Array[right_child-1]) { right_child--; } swap(Array[cur], Array[right_child]); cur = right_child; right_child = 2 * (cur + 1); } if(right_child == len) { if(Array[len] > Array[right_child]) { swap(Array[right_child], Array[len]); } } } void make_heap(int *Array, int len) { int index = (len - 2)/2; do{ adjust_heap(Array, index, len); index--; }while(index != -1); } int main() { const int len = 9; int array[len] = {1,2,3,4,5,6,7,8,9}; make_heap(array, len); for(int i = 0; i < len ; i++) { cout<<array[i]<<" "; } cout<<endl; return 0; }
相关文章推荐
- [C/C++] 先序建立二叉树| 先序、中序、后序遍历二叉树| 求二叉树深度、节点数、叶节点数 算法实现
- 二叉树的各种建立方法及C++实现
- 单链表建立c++实现
- C++实现二叉树的建立和三种递归遍历
- 数据结构_队列_用链表动态建立释放节点实现队列各种操作_C++实现
- 二叉排序树的建立、插入、删除、查找、4种遍历 C++完整实现
- Huffman树的建立(c++实现)
- 二叉树的建立、节点查找以及节点删除C和C++实现
- C++实现红黑树建立,销毁,查找,插入和删除
- C++实现:双输入单输出系统:建立一个 感知器网络,实现上述样本的分类。计算出相应的网络权值矩阵w。
- 基于AD0建立和压缩ACCESS数据库文件的C++简单实现
- 哈夫曼树数据机构的建立及哈夫曼编码与解码的C++实现
- C++实现建立和一二进制树的三个递归遍历
- 二叉搜索树建立、插入、删除、前继节点、后继节点之c++实现
- c++ 建立链表并实现合并
- c++实现最大堆建立(链表结构)和堆排序
- 二叉排序树的建立、插入、删除、查找、比较、4种遍历方式的C++完整实现版
- C++ 大根堆 实现优先队列
- c++实现双向链表的建立,插入,删除,合并,打印
- 数据结构_图_建立十字链表求有向图中每个顶点的入度出度并输出和它相关的弧_C++实现