题目信息 时间: 2019-06-30 题目链接:Leetcode tag: 大根堆 小根堆 难易程度:中等 题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的 ...
分类:
其他好文 时间:
2020-07-04 00:57:27
阅读次数:
75
本博客总结学习堆排序算法,以一个数组为例,采用大根堆进行升序排序,附有代码实现。 堆排序的思想 堆排序的逻辑是建立在完全二叉树的基础上。 有两个概念必须要了解: 大根堆:每个结点值都大于等于左右孩子结点值 小根堆:每个结点值都小于等于左右孩子结点值 以大根堆为例,将根结点与最后一个结点交换,弹出根结 ...
分类:
编程语言 时间:
2020-06-30 13:03:10
阅读次数:
63
#走进堆 堆分为大根堆和小根堆,大根堆堆顶元素最大,越往下元素越小,小根堆相反,堆顶元素最小,越往下元素越大 ##1.定义 手写堆是什么,表示从来没用过,要写堆当然要用我STL的优先队列啦 priority_queue<int> q;//默认的优先队列是大根堆 priority_queue<int, ...
分类:
其他好文 时间:
2020-06-27 20:28:22
阅读次数:
80
客观题: 1、已知无向图 G 如下所示,使用克鲁斯卡尔(Kruskal)算法求图 G 的最小生成树,加入到最小生成树中的边依次是: A、(b,f), (b,d), (a,e), (c,e), (b,e) B、(b,f), (b,d), (b,e), (a,e), (c,e) C、(a,e), (b, ...
分类:
其他好文 时间:
2020-06-18 21:33:29
阅读次数:
452
Treap=Tree+Heap,即在普通二叉查找树的基础上每个节点有了一个新值域:强化值(因为它将普通二叉查找树强化为treap就自己起了这个名字,是用来满足堆性质的,即后文说满足堆性质都指强化值满足堆性质)。要求这个树节点的键值(即要代表的数)满足BST的性质、强化值满足小跟堆的性质(你非得大根堆 ...
分类:
其他好文 时间:
2020-05-31 18:15:35
阅读次数:
59
左边大顶堆,右边小顶堆。右边数量比左边多一,左边放小的那半数,右边放大的那半 是偶数个,那就返回两个根堆的头结点的q平均值,如果是奇数,就是小根堆的数量大于大根堆数量1个,返回小根堆的头; 当左右平等数量的时候,往小根堆了加入,当小根堆大于大根堆时候,往大根堆里加入 1 priority_queue ...
分类:
其他好文 时间:
2020-05-30 21:36:43
阅读次数:
83
堆(heap) 定义 堆是一种比较特殊的数据结构,它是利用完全二叉树的结构来维护一组数据,可以看做是一棵树的数组对象,说白了,堆就是用数组实现的二叉树。根据根节点的值还分为大根堆和小根堆。在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。例如下图就是一个 ...
分类:
其他好文 时间:
2020-05-24 15:13:48
阅读次数:
71
# 堆排序的向下调整性 # 排序步骤:建堆 交换堆顶元素和最后一个元素 调整使堆重新有序 i的指向前移(i指向最后一个元素)重复2以后的步骤 # 交换步骤将堆中的最大元素移动到了堆的最后位置,排序完成后,得到的是一个升序序列 # 大根堆的排序 # 向下调整 def sift(li,low,high) ...
分类:
编程语言 时间:
2020-05-24 11:46:57
阅读次数:
66
最近正在重新看算法,记录关于堆排的一些特性和个人理解; 设:初始数组 5 0 6 8 2 代码清单: public static void heapInsert(int[] arr, int index) { //将数组转换成为大根堆的形式 //找父节点 while (arr[index] > ar ...
分类:
编程语言 时间:
2020-05-21 13:16:29
阅读次数:
64
堆排序 大根堆,小根堆:所有非叶子节点大于或者小于其孩子节点。 用大根堆进行从小到大的排序 建立大根堆:从下往上,从右往左遍历非叶子节点,判断其是否符合大根堆性质,若不符合,则交换节点位置,直至建出大根堆。 大根堆根节点一定是被排序的这段数值的最大值,交换堆尾堆首数值,堆尾指针前移(有没有冒泡的感觉 ...
分类:
编程语言 时间:
2020-05-16 12:18:49
阅读次数:
77