Hello 算法 1.0.0b4 Python版11.6. 归并排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 11.7. 堆排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 11.8. 桶排序 . . (? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 ?(?) 。 主流排序算法的时间复杂度通常为 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 # === File: time_complexity.py === def linear_log_recur(n: float) -> int: """ 线性对数阶""" if n <= 据结构,其入队和出队操作的时间复杂度均为 ?(log ?) ,而建队操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见后续的堆排序章节。 ‧ 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前0 码力 | 329 页 | 27.34 MB | 1 年前3
Hello 算法 1.1.0 Python版11.6 归并排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 11.7 堆排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 11.8 桶排序 . . log ?) 。 第 2 章 复杂度分析 hello‑algo.com 38 图 2‑13 线性对数阶的时间复杂度 主流排序算法的时间复杂度通常为 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 7. 阶乘阶 ?(?!) 阶乘阶对应数学上的“全排列”问题。给定 ? 个互不重复的元素,求其所有可能的排列方案,方案数量为: ?! = ? × (? − 1) × (? − 2) × ⋯ 优先队列:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 ?(log ?) ,而建队操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见“堆排序”章节。 ‧ 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前0 码力 | 364 页 | 18.42 MB | 1 年前3
Hello 算法 1.0.0b5 Python版11.6 归并排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 11.7 堆排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 11.8 桶排序 . . log ?) 。 第 2 章 复杂度分析 hello‑algo.com 36 图 2‑13 线性对数阶的时间复杂度 主流排序算法的时间复杂度通常为 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 7. 阶乘阶 ?(?!) 阶乘阶对应数学上的“全排列”问题。给定 ? 个互不重复的元素,求其所有可能的排列方案,方案数量为: ?! = ? × (? − 1) × (? − 2) × ⋯ 据结构,其入队和出队操作的时间复杂度均为 ?(log ?) ,而建队操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见后续的堆排序章节。 ‧ 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前0 码力 | 361 页 | 30.64 MB | 1 年前3
Hello 算法 1.0.0 Python版11.6 归并排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 11.7 堆排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 11.8 桶排序 . . log ?) 。 第 2 章 复杂度分析 hello‑algo.com 38 图 2‑13 线性对数阶的时间复杂度 主流排序算法的时间复杂度通常为 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 7. 阶乘阶 ?(?!) 阶乘阶对应数学上的“全排列”问题。给定 ? 个互不重复的元素,求其所有可能的排列方案,方案数量为: ?! = ? × (? − 1) × (? − 2) × ⋯ 优先队列:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 ?(log ?) ,而建队操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见“堆排序”章节。 ‧ 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前0 码力 | 362 页 | 17.54 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Python 版11.6 归并排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 11.7 堆排序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 11.8 桶排序 . . 。 第 2 章 复杂度分析 www.hello‑algo.com 38 图 2‑13 线性对数阶的时间复杂度 主流排序算法的时间复杂度通常为 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 7. 阶乘阶 ?(?!) 阶乘阶对应数学上的“全排列”问题。给定 ? 个互不重复的元素,求其所有可能的排列方案,方案数量为: ?! = ? × (? − 1) × (? − 2) × ⋯ 优先队列:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 ?(log ?) ,而建堆操作为 ?(?) ,这些操作都非常高效。 ‧ 堆排序:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数 据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见“堆排序”章节。 ‧ 获取最大的 ? 个元素:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前0 码力 | 364 页 | 18.43 MB | 10 月前3
Hello 算法 1.0.0b1 Python版(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 ?(?) 。 主流排序算法的时间复杂度都是 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 # === File: time_complexity.py === def linear_log_recur(n): """ 线性对数阶 """ if n <= 1: return 1 堆常见应用 ‧ 优先队列。堆常作为实现优先队列的首选数据结构,入队和出队操作时间复杂度为 ?(log ?) ,建队操 作为 ?(?) ,皆非常高效。 ‧ 堆排序。给定一组数据,我们使用其建堆,并依次全部弹出,则可以得到有序的序列。当然,堆排序一 般无需弹出元素,仅需每轮将堆顶元素交换至数组尾部并减小堆的长度即可。 ‧ 获取最大的 ? 个元素。这既是一道经典算法题目,也是一种常见应用,例如选取热度前 速排序的平均时间复杂度虽然与「归并排序」 和「堆排序」一致,但实际 效率更高,这是因为: ‧ 出现最差情况的概率很低:虽然快速排序的最差时间复杂度为 ?(?2) ,不如归并排序,但绝大部分情况 下,快速排序可以达到 ?(? log ?) 的复杂度。 ‧ 缓存使用效率高:哨兵划分操作时,将整个子数组加载入缓存中,访问元素效率很高。而诸如「堆排序」 需要跳跃式访问元素,因此不具有此特性。 ‧0 码力 | 178 页 | 14.67 MB | 1 年前3
Hello 算法 1.0.0b2 Python版(? log ?) 线性对数阶常出现于嵌套循环中,两层循环的时间复杂度分别为 ?(log ?) 和 ?(?) 。 主流排序算法的时间复杂度都是 ?(? log ?) ,例如快速排序、归并排序、堆排序等。 # === File: time_complexity.py === def linear_log_recur(n: float) -> int: """ 线性对数阶 """ if n 堆常见应用 ‧ 优先队列。堆常作为实现优先队列的首选数据结构,入队和出队操作时间复杂度为 ?(log ?) ,建队操 作为 ?(?) ,皆非常高效。 ‧ 堆排序。给定一组数据,我们使用其建堆,并依次全部弹出,则可以得到有序的序列。当然,堆排序一 般无需弹出元素,仅需每轮将堆顶元素交换至数组尾部并减小堆的长度即可。 ‧ 获取最大的 ? 个元素。这既是一道经典算法题目,也是一种常见应用,例如选取热度前 速排序的平均时间复杂度虽然与「归并排序」 和「堆排序」一致,但实际 效率更高,这是因为: ‧ 出现最差情况的概率很低:虽然快速排序的最差时间复杂度为 ?(?2) ,不如归并排序,但绝大部分情况 下,快速排序可以达到 ?(? log ?) 的复杂度。 ‧ 缓存使用效率高:哨兵划分操作时,将整个子数组加载入缓存中,访问元素效率很高。而诸如「堆排序」 需要跳跃式访问元素,因此不具有此特性。 ‧0 码力 | 186 页 | 15.69 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Python 版bubble sort 冒泡排序 泡沫排序 insertion sort 插入排序 插入排序 quick sort 快速排序 快速排序 merge sort 归并排序 合併排序 heap sort 堆排序 堆積排序 bucket sort 桶排序 桶排序 counting sort 计数排序 計數排序 radix sort 基数排序 基數排序 divide and conquer 分治 分治0 码力 | 364 页 | 18.74 MB | 10 月前3
Python 标准库参考指南 2.7.18 rted() 函数会更有效率。此外,当 n==1 时, 使用内置的min() 和max() 函数会更有效率。如果需要重复使用这些函数,请考虑将可迭代对象转为真正 的堆。 8.4.1 基本示例 堆排序 可以通过将所有值推入堆中然后每次弹出一个最小值项来实现。 >>> def heapsort(iterable): ... h = [] ... for value in iterable:0 码力 | 1552 页 | 7.42 MB | 10 月前3
Python 标准库参考指南 2.7.18 rted() 函数会更有效率。此外,当 n==1 时, 使用内置的min() 和max() 函数会更有效率。如果需要重复使用这些函数,请考虑将可迭代对象转为真正 的堆。 8.4.1 基本示例 堆排序 可以通过将所有值推入堆中然后每次弹出一个最小值项来实现。 >>> def heapsort(iterable): ... h = [] ... for value in iterable:0 码力 | 1552 页 | 7.42 MB | 10 月前3
共 28 条
- 1
- 2
- 3













