0,堆的简介 数据结构中的堆是一种特殊的二叉树,不同于 Java 内存模型中的堆。 堆必须符合以下两个条件: 从第一点可以知道,堆适合用数组来存储。 第二点中,若父节点都大于等于左右子节点,则被称为大顶堆,反之则为小顶堆。 图-最大堆 1,堆的特性 2,堆的实现 3,堆的应用 3.1堆排序 利用堆这 ...
分类:
其他好文 时间:
2019-09-24 21:03:51
阅读次数:
96
[TOC] 更新、更全的《数据结构与算法》的更新网站,更有python、go、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11407287.html 一、题意理解 将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i ...
分类:
编程语言 时间:
2019-09-24 17:27:50
阅读次数:
73
https://www.acwing.com/problem/content/147/ 有n个商品,商品有价格和过期时间,在过期时间之前才可以卖出,每天只能卖一个。求最大利润。 假如直接对过期时间排序然后贪心会WA。事实上先把所有物品按过期时间排序,把商品的价格放进小顶堆里面,检测到一个商品的过期时 ...
一:排序为什么排序便于查找什么是排序时间效率-快 排序的速度快 空间效率-占用空间小还有就是稳定性强指排序的位置变化,比如相同数字在同一个数列中 如果后面的排到先前的前面表示不稳定 二:排序方法插入排序 把第一个数看成一个有序的序列,如何把后面的数插入,小的前面,大的后面 希尔排序 先取一个正整数d ...
分类:
编程语言 时间:
2019-09-03 14:57:27
阅读次数:
106
堆(heaps)不是容器,而是一种特别的数据组织方式。堆一般用来保存序列容器。 堆是一个完全二叉树,每个节点与其子节点位置相对。父节点总是大于或等于子节点,这种情况下被叫作大顶堆,或者父节点总是小于或等于子节点,这种情况下叫作小顶堆。注意,给定父节点的子节点不一定按顺序排列。 创建堆 用来创建堆的函 ...
分类:
其他好文 时间:
2019-09-01 16:53:08
阅读次数:
81
题目:如何得到一个数据流中的中位数? 注:使用一个大顶堆和一个小顶堆来实现,大顶堆存储左半部分小的数,小顶堆存储右半部分大的数。插入数时,如果数量为偶数,先插入小顶堆,获取堆顶最小值,然后将其插入大顶堆;如果数量为奇数,先插入小顶堆,获取堆顶最大值,然后将其插入小顶堆。 ...
分类:
其他好文 时间:
2019-08-15 22:55:40
阅读次数:
131
题意: 给定一组数,共n个,第i次把第i个数扔进来,要求你删掉前i-1个数中的一些(不许删掉刚加进来这个数),使得前i个数相加的和小于m。问你对于每个i,最少需要删掉几个数字。 题解: 肯定是优先删大数,一开始想的方法类似于尺取,就是维护一个大顶堆作为现有的数,小顶堆作为要删的数,每次大顶堆的元素总 ...
分类:
其他好文 时间:
2019-07-31 00:52:22
阅读次数:
202