给定n
可比元素(比如数字或字符串)的列表,找到i
有序元素的最佳算法需要O(n)
时间。
Python是否为列表,词组,集合实现本地O(n)
时间顺序统计信息??
答案 0 :(得分:7)
Python提到的数据结构都没有实现第i阶统计算法。
事实上,对于字典和集合来说可能没有多大意义,因为它们都没有对其元素的排序做出任何假设。对于列表,应该不难实现提供O(n)运行时间的selection algorithm。
答案 1 :(得分:4)
这不是本机解决方案,但您可以使用NumPy的partition在O(n)时间内查找列表的 k 顺序统计信息。
import numpy as np
x = [2, 4, 0, 3, 1]
k = 2
print('The k-th order statistic is:', np.partition(np.asarray(x), k)[k])
编辑:这假设为零索引,即上面的“零阶统计”为0
。
答案 2 :(得分:0)
如果我<<你可以看看http://docs.python.org/library/heapq.html#heapq.nlargest和http://docs.python.org/library/heapq.html#heapq.nsmallest(不解决你的问题,但比排序和获取第i个元素更快)。