【 在 Analog 的大作中提到: 】
: 不行,需要各种操作都是O(logn*logn)
: - 来自「最水木 for iPhone 6s」
还一个方法:
K大的buffer。
在区间内搜索一次。最大的k个在k-buffer里进行插入排序。
如果k足够小,空间开销忽略,时间是O(n),n=选择的数据集。
虽然O数不小,但是实际运行时间跟拷贝n个数据差不多。可以不必纠结O数。
如果n足够小,远远小于全集,可以认为是O(1)。
就是说,时间与全集的大小无关,只与选择集有关。
你开发的任何算法,都免不了拷贝一遍数据。这时间就算完了,你认为是O(0)都是合理的。
--
修改:ylh1969 FROM 123.118.54.*
FROM 123.118.54.*