【发布时间】:2021-03-11 15:31:00
【问题描述】:
我看到了这段文字:
出现一个问题:
但是你在正常的快速排序中看到,当我们在一个子数组中有 1 个元素并且在下一个子数组中有 n-1 个元素时,我们在使用堆栈时会得到 O(n) 的深度。这与这个事实相反吗?问题出在哪里?
我对这个话题的误解在哪里?
【问题讨论】:
-
不是问这个问题的正确地方
-
常数分数类似于
1/10。如果您只在子数组中放入n元素中的 1 个,那就是1/n,一个非常数分数。一个常数分数会将线性数量的元素移动(对于足够大的n)到一个分区或另一个分区中。 -
在正常的快速排序中,当每次都选择最坏的枢轴情况时,您将获得深度 n,而不仅仅是一次。最坏的情况发生在例如:1)数据已经按正向或反向排序,2)所有元素都相同,3)每次都选择最大值作为枢轴。
-
@DarrylG。这句话以if开头。但我们知道,在随机快速排序中,堆栈深度从未超过 O(log n)。那么为什么要从 if 开始呢?也许随机产生一种情况,其中一方不是恒定分数?
标签: python algorithm sorting data-structures quicksort