pythonはO(n)複雑度アルゴリズムを実現して10万以内の数字を並べ替え,この10万数字は最大100である

466 ワード

条件付き最大100の数字を与えているので、上位100の数字をカウントして、数字ごとに何回出てから出力すればいいのでしょうか.
import random
def count_sort(li,max):
    count=[0 for i in range(max+1)]#      ,   100 0
    for num in li:
        count[num]+=1#li        ,      1
    i=0
    for num,m in enumerate(count):#num   ,m      
        for j in range(m):
            li[i]=num
            i+=1
    return li
data=[]
for i in range(1000000):
    data.append(random.randint(0,100))
count_sort(data,100)