![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉堆
小胡同的诗
千里之行,始于足下
展开
-
求顺序表中最大值和次大值的最优算法
问题描述 给一个 n 个数字的顺序表,求其中的最大值和次大值。求一个比较次数不大于 n−⌈logn⌉−2n-\lceil logn \rceil-2n−⌈logn⌉−2 的算法。 算法 顺序比较 初始化最大值和次大值是下标为 0 的元素,之后每次更新最大值时,把上次最大值给次大值;不能更新最大值时也要和次大值比较看能否更新次大值。易得最坏情况下比较次数为 2(n−1)2(n-1)2(n−1)。 堆 我们发现,堆的结构可以在常数时间内找到最大值和次大值。但是在构建堆的时候,每次调整的比较次数约为 2h2h2h原创 2020-09-16 00:16:11 · 3468 阅读 · 0 评论 -
二叉堆与堆排序总结
目录前言性质抽象实现 前言 堆的数据结构是一个完全二叉树,其能实现优先队列的功能,主要的作用是能够动态地维护一个有关优先级的序列,使其在插入和删除都能在O(logn)O(logn)O(logn)时间内完成,查询能在O(1)O(1)O(1)完成。 性质 对于小根堆而言,这个二叉树形的结构只要满足所有的父节点都小于子节点就是小根堆,显然,这是个递归的定义。对于大根堆则是父节点大于子节点。 抽象 ...原创 2019-09-08 16:02:14 · 145 阅读 · 0 评论