【发布时间】:2016-01-01 14:13:53
【问题描述】:
我最近观看了一段视频,介绍了如何让选择算法在 O(n) 时间内运行,但我对制作算法过程中的一个步骤感到困惑。
视频说我们应该将一组数字或数组划分为 n/5 组,每组 5 个元素,其余元素在另一组中。然后我们找到每组的中位数。然后我们找到中位数的中位数并将其用作枢轴等等。
但是,要找到每个组的中位数,我们必须先对组进行排序。视频说使用插入排序或合并排序,但那些算法不是 O(nlogn) 吗?那么,如果排序已经花费了 O(nlogn),那么整体运行时间怎么可能是 O(n)?
【问题讨论】: