【发布时间】:2015-11-09 15:15:17
【问题描述】:
我有一个非常大的数组。我必须找到该数组中前 5 个最大的元素。执行此操作的最佳/最佳算法是什么?
请注意,我不必进行排序,它是一个未排序的数组
【问题讨论】:
-
使用大小为 5 的堆,如果元素大于最小的堆,则将其放入该堆(并删除它)。
-
@JonH 选择算法是
O(n),但代码复杂且常量可怕。如果您在n比m大得多的n未排序数组中寻找m元素,那么 Nico 建议的堆解决方案在实践中将会快得多。
标签: c# arrays algorithm data-structures