建堆之后堆顶是几
把 [17, 24, 15, 13, 23] 建成大顶堆。运行下面这段程序: def sift_down(h, i, n): while True: big = i
阅读更多 →
堆排序稳定吗
堆排序【0】。
阅读更多 →
堆排序为什么不用额外空间
堆排序的空间复杂度是 O(1),因为【0】。
阅读更多 →
堆排序的两步
堆排序分两步:【0】。
阅读更多 →
⚠️ 亲眼看看最坏情况
取最后一个当枢轴时,已经排好序的数组会让快排退化。 补全 depth:返回 qsort 在已排序数组上的递归深度。 ——五个元素退化成五层,正是 O(n²) 的样子。
阅读更多 →
接上递归,写完快排
补全 qsort:取最后一个当枢轴,把小的和不小于它的分成两堆,各自递归再拼起来。 排完拼起来输出。
阅读更多 →
写一次分区
补全 partition:以最后一个为枢轴,把比它小的都挪到左边,返回 (新数组, 枢轴最终下标)。 输出枢轴落在哪一格。
阅读更多 →
快排排完是什么样
运行下面这段程序: def qsort(a): if len(a) <= 1: return list(a) pivot = a[-1] less = [
阅读更多 →
分区之后枢轴落在哪
以最后一个(23)为枢轴给 [17, 24, 15, 13, 23] 分区。运行下面这段程序: def partition(a): b = list(a) pivot = b[-1]
阅读更多 →
快排的最坏情况
快排退化成 O(n²),是因为【0】。
阅读更多 →