一尘不染

快速选择的平均运行时间

algorithm

维基百科指出,快速选择算法(Link)的平均运行时间为O(n)。但是,我不清楚这是怎么回事。谁能(通过递归关系+主方法使用)向我解释平均运行时间如何为O(n)?


阅读 326

收藏
2020-07-28

共1个答案

一尘不染

因为

我们已经知道我们所需元素位于哪个分区。

我们不需要对所有元素进行排序(通过对它们进行分区),而只需要对所需的分区进行操作。


与快速排序一样,我们必须先将一半分割成,然后再将一半分割成一半,但是这次,我们只需要在期望元素的两个 单一* 分割(一半)中进行下一轮分割躺在。

就像(不是很准确)

n + 1/2 n + 1/4 n + 1/8 n + ..... <2 n

所以它是O(n)。

为了方便起见,使用了一半,但实际分区并不精确为50%。

2020-07-28