Hello 算法 1.2.0 繁体中文 Go 版
8.1 堆積 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 8.2 建堆積操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 8.3 Top‑k 問題 261 12.2 分治搜尋策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 12.3 構建二元樹問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 12.4 河內塔問題 . . . ! 如果你已經積累一定的刷題量,熟悉大部分題型,那麼本書可助你回顧與梳理演算法知識體系,倉庫源程式 碼可以當作“刷題工具庫”或“演算法字典”來使用。 若你是演算法“大神”,我們期待收到你的寶貴建議,或者一起參與創作。 前置條件 你需要至少具備任一語言的程式設計基礎,能夠閱讀和編寫簡單程式碼。 0.1.2 內容結構 本書的主要內容如圖 0‑1 所示。 ‧ 複雜度分析:資料結構和演算法0 码力 | 385 页 | 18.80 MB | 10 月前305. OpenKruise镜像预热实践_王思宇
项目 • 阿里云开源的基于 Kubernetes 的云原生应用自动化套件 • 阿里巴巴经济体上云全面使用的部署基座 社区用户: • 携程、OPPO、斗鱼TV、有赞、苏宁、比心、Boss直聘、申通、小红书、火 花思维、VIPKID、掌门教育、杭银消费、万翼科技、多点Dmall、佐疆科技、 享住智慧、艾佳生活、永辉科技中心、跟谁学、Deepexi、哈啰出行 • Lyft、Bringg、Arkane0 码力 | 28 页 | 5.78 MB | 1 年前3Go 构建大型开源分布式数据库技术内幕
Go 搭建大型开源分布式数据库技术内幕 shenli@PingCAP 关于我 ● 申砾 (Shen Li) ● TiDB 技术负责人 ● 网易有道 / 360搜索 / PingCAP ● Infrastructure software engineer 为什么需要一个新的数据库? 从单机数据库到 NewSQL ● 关系型数据库 ● NoSQL ● 中间件 ● NewSQL0 码力 | 44 页 | 649.68 KB | 1 年前3Hello 算法 1.0.0b1 Golang版
堆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 8.2. 建堆操作 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 8.3. 小结 . (log ?) ,建队操 作为 ?(?) ,皆非常高效。 ‧ 堆排序。给定一组数据,我们使用其建堆,并依次全部弹出,则可以得到有序的序列。当然,堆排序一 般无需弹出元素,仅需每轮将堆顶元素交换至数组尾部并减小堆的长度即可。 ‧ 获取最大的 ? 个元素。这既是一道经典算法题目,也是一种常见应用,例如选取热度前 10 的新闻作为 微博热搜,选取前 10 销量的商品等。 8.2. 建堆操作 * 如果我们想要根据输入列表来生成一个堆,这样的操作被称为「建堆」。 8. 堆 hello‑algo.com 132 8.2.1. 两种建堆方法 借助入堆方法实现 最直接地,考虑借助「元素入堆」方法,先建立一个空堆,再将列表元素依次入堆即可。 基于堆化操作实现 然而,存在一种更加高效的建堆方法。设元素数量为 ? ,我们先将列表所有元素原封不动添加进堆,然后迭 代地对各个结点执行「从顶至底0 码力 | 190 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b2 Golang版
堆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 8.2. 建堆操作 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 8.3. 小结 . (log ?) ,建队操 作为 ?(?) ,皆非常高效。 ‧ 堆排序。给定一组数据,我们使用其建堆,并依次全部弹出,则可以得到有序的序列。当然,堆排序一 般无需弹出元素,仅需每轮将堆顶元素交换至数组尾部并减小堆的长度即可。 ‧ 获取最大的 ? 个元素。这既是一道经典算法题目,也是一种常见应用,例如选取热度前 10 的新闻作为 微博热搜,选取前 10 销量的商品等。 8.2. 建堆操作 * 如果我们想要根据输入列表来生成一个堆,这样的操作被称为「建堆」。 8. 堆 hello‑algo.com 135 8.2.1. 两种建堆方法 借助入堆方法实现 最直接地,考虑借助「元素入堆」方法,先建立一个空堆,再将列表元素依次入堆即可。 设元素数量为 ? ,则最后一个元素入堆的时间复杂度为 ?(log ?) ,在依次入堆时,堆的平均长度为 ? 2 ,因此 该方法的总体时间复杂度为0 码力 | 202 页 | 15.73 MB | 1 年前3Hello 算法 1.0.0b4 Golang版
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 目 录 hello‑algo.com ii 8.2. 建堆操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 8.3. Top‑K 问题 ,而建队操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见后续的堆排序章节。 ‧ 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前 10 的商品等。 8.2. 建堆操作 被称为「建堆」。 8.2.1. 借助入堆方法实现 最直接的方法是借助“元素入堆操作”实现,首先创建一个空堆,然后将列表元素依次添加到堆中。 设元素数量为 ? ,则最后一个元素入堆的时间复杂度为 ?(log ?) 。在依次添加元素时,堆的平均长度为 ? 2 , 因此该方法的总体时间复杂度为 ?(? log ?) 。 8.2.2. 基于堆化操作实现 有趣的是,存在一种更高效的建堆方法,其时间复杂度仅为0 码力 | 347 页 | 27.40 MB | 1 年前3Hello 算法 1.1.0 Go版
1 堆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 8.2 建堆操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 8.3 Top‑k 问题 max) // 循环向下堆化 i = max } } 8.1.3 堆的常见应用 ‧ 优先队列:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 ?(log ?) ,而建队操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见“堆排序”章节。 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前 10 的商品等。 8.2 建堆操作 在某些情况下,我们希望使用一个列表的所有元素来构建一个堆,这个过程被称为“建堆操作”。 8.2.1 借助入堆操作实现 我们首先创建一个空堆,然后遍历列表,依次对每个元素执行“入堆操作”,即先将元素添加至堆的尾部,再 对该元素执行“从底至顶”堆化。0 码力 | 383 页 | 18.48 MB | 1 年前3Hello 算法 1.0.0 Golang版
1 堆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 8.2 建堆操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 8.3 Top‑k 问题 max) // 循环向下堆化 i = max } } 8.1.3 堆的常见应用 ‧ 优先队列:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 ?(log ?) ,而建队操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见“堆排序”章节。 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前 10 的商品等。 8.2 建堆操作 在某些情况下,我们希望使用一个列表的所有元素来构建一个堆,这个过程被称为“建堆操作”。 8.2.1 借助入堆操作实现 我们首先创建一个空堆,然后遍历列表,依次对每个元素执行“入堆操作”,即先将元素添加至堆的尾部,再 对该元素执行“从底至顶”堆化。0 码力 | 382 页 | 17.60 MB | 1 年前3Hello 算法 1.0.0b5 Golang版
1 堆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 8.2 建堆操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 8.3 Top‑K 问题 ,而建队操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见后续的堆排序章节。 ‧ 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前 10 的商品等。 8.2 建堆操作 在某些情况下,我们希望使用一个列表的所有元素来构建一个堆,这个过程被称为“建堆操作”。 8.2.1 自上而下构建 我们首先创建一个空堆,然后遍历列表,依次对每个元素执行“入堆操作”,即先将元素添加至堆的尾部,再 对该元素执行“从底至顶”堆化。 每当一个元素入堆,堆的长度就加一,因此堆是“自上而下”地构建的。 设元素数量为 ? ,每个元素的入堆操作使用 ?(log ?) 时间,因此该建堆方法的时间复杂度为0 码力 | 379 页 | 30.70 MB | 1 年前3Hello 算法 1.2.0 简体中文 Go 版
1 堆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 8.2 建堆操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 8.3 Top‑k 问题 max) // 循环向下堆化 i = max } } 8.1.3 堆的常见应用 ‧ 优先队列:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 ?(log ?) ,而建堆操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见“堆排序”章节。 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前 10 的商品等。 8.2 建堆操作 在某些情况下,我们希望使用一个列表的所有元素来构建一个堆,这个过程被称为“建堆操作”。 8.2.1 借助入堆操作实现 我们首先创建一个空堆,然后遍历列表,依次对每个元素执行“入堆操作”,即先将元素添加至堆的尾部,再 对该元素执行“从底至顶”堆化。0 码力 | 384 页 | 18.49 MB | 10 月前3
共 23 条
- 1
- 2
- 3