计数排序
#排序思想:创建一个新列表,把需要计数的列表中的元素递归出来,使用类似字典的方式进行累加,通过循环迭代出值对应的索引个数,添加到原列表中
def count_sort(li,max_count): #max_count 最大值
new_li=[0 for _ in range(0,max_count+1)] #新建列表都是0
for i in li: #把列表中数按索引存到新列表中,在对应的数值上,对应的索引累加,得到索引位置上的个数
new_li[i]+=1 #计算对应位置上的个数
li.clear() #清空li #清楚旧列表中的数
for ind,val in enumerate(new_li): #使用enumerate查找对应索引上的值,此时的值就是元素个数
for i in range(val): #循环元素总个数
li.append(ind) #其索引就是其对应的值
在排序数量较少的情况下使用,如果列表长度在1到1亿 有限制,时间较长
def time_out():
start=time.time()
import random
li = [random.randint(0, 1000) for _ in range(100)]
count_sort(li, max_count=1000)
print(li)
end=time.time()
return end-start
print(time_out())