堆和堆排序在笔试题面试题中的应用_第1页
堆和堆排序在笔试题面试题中的应用_第2页
堆和堆排序在笔试题面试题中的应用_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、堆和堆排序在笔试题面试题中的应用&n bsp;堆和堆排序在题题中的应用;&n bsp; &n bsp; &n bsp;使用堆解决可以解决下列几个问题,它们在笔试面试题中可以称为经典和烫手的:1构建哈夫曼代码怎样提升性能?我们知道在构建哈夫曼树时,每次要选择集合中两个最小的元 素,然后将元素值相加,合并为一个新节点,此时两个最小的元素的 取出可以用HeapExtractMin 函数来实现,产出的新节点需要插入到 堆中我们有MinHeapInsert 函数来实现。之前我们遇到哈夫曼编码,往往关注的是其思想,然而每次取出最小的2个元素的过程,却涉及到排序、求极值的问题。这时候用 堆来维护这个队列,每

2、次还能将取出的两个最小值的和插到堆里, 非 常方便,减少了运行时间。2计算大型浮点数集合的和有一个很普遍的情况,我们知道浮点数的存储都有精度,遇到 大浮点数和小浮点数相加,很可能会造成精度误差。所以可以每次从 优先级队列中取出最小的两个数相加,和 1的实现差不多。3.在具有10亿个数值的集合中找到100万个最大的数这个就是TOP(K)问题了,可以建立100万个元素的最小二叉堆,后面的数和根部进行比较,如果大于根部,进行堆调整4.将多个小型有序文件合并到一个大型有序文件中该问题我整理成了另一篇文章。里面附有源码测试;假设有n个小型有序文件,建立一个大小为 n的最小堆,每 个有序文件贡献一个(如果有的话),每次取出最小值插入到大型文件 中,并且去掉该最小元素,并将它在文件中的后续元素插入到堆中 能够在o(lgn)的时间内从n个文件中选择要插入到大型文件中的元 素。意思就是,维护一个堆,该堆存放了所有小文件的最小值。每 次取出最小值min(属于小文件A),将小文件A的下一个最小值再插 入到A。持续下去,问题解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论