pyhton中位数的中位数不是On

问题描述

对于一个项目,要比较不同中值查找算法的运行时间。我从“中位数的中位数”开始,基本上使用了极客发现的极客代码(我注意到在此发布相同的代码是否有帮助) https://forum.xda-developers.com/attachment.php?attachmentid=3055129&d=1418113412

我通过与计算平均值的标准python方法进行比较对它进行了测试。

if __name__ == '__main__':
arr = random.sample(range(1,10000000000),10000001) 
arr1=arr[:] # i copied the list to make sure they both have the same starting position 

t1=time.time()
print("std median",statistics.median(arr))
t2 = time.time()
print("time std median:",t2-t1)
t12 = time.time()
n = len(arr1)
k = n // 2 + 1 #median for odd number of elements
print("Med of Med:",kthSmallest(arr1,n - 1,k))
t21 = time.time()
print("time med of med:",t21-t12)

出于未知的原因,我的运行时很高,只是错误。在约10个Mio元素的数组中找到中值,我花了 13.28秒(采用标准pyhton方法 28.91秒(中值与中值)。 所以我想知道,我在geek for geeks上发现的实现有问题吗?因为应该是相反的方法。标准pyhton方法的运行时间为O(nlogn),中位数的中位数在O(n)中运行,因此应该更快。

有人知道我做错了什么,可以给我提示如何解决吗?

非常感谢:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)