我用Python命令统计

时间:2012-02-24 21:13:32

标签: python

给定n可比元素(比如数字或字符串)的列表,找到i有序元素的最佳算法需要O(n)时间。

Python是否为列表,词组,集合实现本地O(n)时间顺序统计信息??

3 个答案:

答案 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.nlargesthttp://docs.python.org/library/heapq.html#heapq.nsmallest(不解决你的问题,但比排序和获取第i个元素更快)。