我们可以在线性时间内对未排序的实数数组进行排序吗?这就是我的想法:
给定一个大小为 n 的未排序数组:
- 使用选择算法找出
sqrt(n)^th
元素(称为 x):O(n) - 找出比 x 小的元素和比 x 大的元素并形成 2 个数组:O(n)
- 将两个数组分别排序: O(sqrt(n)log(sqrt(n))) = O(n) as log(n) < sqrt(n)
所以整个算法是O(n)
我知道下限是 nlog(n)。我究竟做错了什么?
我们可以在线性时间内对未排序的实数数组进行排序吗?这就是我的想法:
给定一个大小为 n 的未排序数组:
sqrt(n)^th
元素(称为 x):O(n)所以整个算法是O(n)
我知道下限是 nlog(n)。我究竟做错了什么?