Har*_*ock 0 algorithm data-structures
我有一个文件,其中包含1,000,000个浮点值.我需要找到10,000个最大的值.
我在考虑:
我知道我会的
这会是一个很好的解决方案吗?这是一个家庭作业.
int*_*jay 8
你的解决方案非常好.它基本上是一个在获得K元素后停止的堆,它可以改善从O(NlogN)(完整排序)到的运行时间O(N + KlogN).这里N = 1000000且K = 10000.
O(NlogN)
O(N + KlogN)
但是,您最初不应该对堆执行N次插入,因为这样做O(NlogN)- 而是使用heapify操作,该操作在线性时间内将数组转换为堆.
如果不需要对K数进行排序,则可以使用选择算法找到线性时间内的第K个最大数,然后输出大于它的所有数.这给出了O(n)解决方案.
O(n)
归档时间:
13 年,2 月 前
查看次数:
237 次
最近记录: