【发布时间】:2016-02-10 22:17:26
【问题描述】:
使用 python 在大小为 N 的未排序列表中获取 k 个最小数字的最快方法是什么?
对大数字列表进行排序,然后获得 k 个最小数字,或者通过在列表中查找最小值 k 次来获得 k 个最小数字,确保您从之前的搜索中删除找到的最小值,是否更快?下次搜索?
【问题讨论】:
-
我强烈建议不要找到最小 k 次。
-
是的,我认为这是 k^2 次查找
-
在 Python 中这样做很好,但它实际上是一个与语言无关的问题。
-
@DavidEhrmann:当然,但是 Python 附带电池:
import heapq; result = heapq.nsmallest(k, inputlist)。 -
最快取决于
k,N,取决于整数的大小(如果它们是整数),取决于可用的硬件(例如,使用并行堆排序),关于 Python 实现。
标签: python algorithm time-complexity