堆数据结构的一个重要用处就是:最为高效的优先级队列。优先级队列分为最大优先级队列和最小优先级队列,其中最大优先级队列的一个应用实在一台分时计算机上进行作业的调度。当用堆来实现优先级队列时,需要在队中的每个元素里存储对应的应用对象句柄(handle)。这里对象柄用数组下标表示,因为在堆操作中,堆元素会改变在数组中的位置,所以具体实现中为了重新定义堆元素,我们需要更新应用对象中的数组下标。简单的实现代码如下:

int  HeapMaximum(int a[], int &heapSize)
{
return a[];
}
int HeapExtractMax(int a[], int &iHeapSize)
{
if(iHeapSize < )
{
cout << "heap underflow." << endl;
}
int iMax = a[];
a[] = a[iHeapSize];
iHeapSize = iHeapSize - ;
MaxHeapify(a, , iHeapSize);
return iMax;
}
void HeapIncreaseKey(int a[], int iPos, int iKey)
{
if(iKey < a[iPos])
{
cout << "new key is smaller than current key." << endl;
return;
}
a[iPos] = iKey;
while(iPos > && a[parent(iPos)] < a[iPos])
{
swap(a[iPos], a[parent(iPos)]);
iPos = parent(iPos);
}
}
void MaxHeapInsert(int a[], int iKey, int &iHeapSize)
{
iHeapSize += ;
a[iHeapSize] = -INT_MAX;
HeapIncreaseKey(a, iHeapSize, iKey);
}

同时还找到一份不错的学习代码http://www.cnblogs.com/Anker/archive/2013/01/23/2873951.html

好好学习,总会有收获。

最新文章

  1. python自动化测试(2)-自动化基本技术原理
  2. Permutation Sequence
  3. ES5中新增的Array方法详细说明
  4. 稍览了一下CommonJS
  5. 夺命雷公狗ThinkPHP项目之----企业网站12之文章添加的实现
  6. Linux下C程序的编译,运行,及调试
  7. 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
  8. 从C#到TypeScript - 变量
  9. Java中双向链表的代码实现
  10. Hibernate.cfg.xml 主配置
  11. ssm maven spring AOP读写分离
  12. 依赖于boodtrap3的插件推荐以及bootrap发展前景
  13. c++使用cmake创建dpdk项目
  14. Spring Boot 静态资源路径分析
  15. poj2100(尺取法)
  16. js不需要知道图片宽高的懒加载方法(经过实际测试,不加宽高仍然是无法正常加载的,设置height:auto,height:100%,仍然显示高度为0)
  17. 认识CSS中高级技巧之元素的显示与隐藏
  18. 初步理解impress.js
  19. 一直对zookeeper的应用和原理比较迷糊,今天看一篇文章,讲得很通透,分享如下(转)
  20. Maven Web项目配置Mybatis

热门文章

  1. python正则-字符串处理,主要用于处理请求参数格式为application/x-www-form-urlencoded的表单数据
  2. SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域
  3. python 基础篇 15 内置函数和匿名函数
  4. [leetcode-651-4 Keys Keyboard]
  5. Android Service 服务(二)—— BroadcastReceiver
  6. winform 控件半透明设置
  7. 【Python】Python内置函数dir详解
  8. ASP.NET CORE 2.0 文档中文正式版已经出来了
  9. nopcommerce商城系统--开发者常遇问题清单
  10. linux服务器su之后变成bash-4.1#