我觉得应该不会用排序,只会用标记,这么大的数据,什么排序也都太慢了。 可能是我想的太简单 不知道大家有什么想法。
1
linap 2018-06-28 22:55:05 +08:00 via Android 1
一个 10 大小的数组。遍历数据,数据如果大于数组中的最小的数,替换那个数
|
2
twistoy 2018-06-28 22:55:44 +08:00 via Android 1
维护一个大小为 10 的大根堆。时间复杂度 O(n)
|
3
aaax7676 2018-06-28 22:57:15 +08:00 via Android 2
top k 问题,维护个容量为 k 的堆
|
4
sylxjtu 2018-06-28 23:30:25 +08:00 via Android 1
跑 10 遍 nth_element?
|
6
Win78 2018-06-29 00:53:50 +08:00 via Android 1
优先队列
|
7
easylee 2018-06-29 01:03:05 +08:00 via Android 1
题目我没有什么好的解决办法,但是搁在实际应用中,我是后台定时排序,然后存储标记,这样一来虽然不能做到实时查询,但是很方便,不会牺牲时间复杂度。
|
9
neosfung 2018-06-29 10:49:43 +08:00 1
@twistoy 小根堆,堆顶是前十个最大数中,最小的数。新进来的数和堆顶比较大小,比堆顶大的,就把堆顶换成新进来的数,然后调整堆;否则比堆顶小的,就不管了。
|
15
Templ1 2018-07-01 07:14:42 +08:00 via Android
静态查询-->右转各种堆,各种排序
动态查询-->平衡树 |