如果求前10大的元素,还有更少时间的算法吗
纯属好奇,望大侠不吝赐教
###列表
temp0 = range(2000,5001)
temp1 = range(200,500)
temp2 = range(801,8000)
a = sorted(temp0)
b = sorted(temp1)
c = sorted(temp2)
d = b + c + a
### 计算过程
temp = []
t = 0
for i in d:
t += 1
le = len(temp)
if le < 10:
temp.insert(0,i)
temp = sorted(temp)
else:
f = temp[0]
if i > f:
temp[0] = i
temp = sorted(temp)
print("总数:",len(d))
print("查询次数:",t)
print(temp)
#计算结果
总数: 10500
查询次数: 10500
[7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999]
你的算法的插入后排序,可以用二分法插入优化