カウントソート(python)
1786 ワード
def counting_sort(A, k):
'''
Params:
list[int] A, ,
int k, A
'''
# A
N = len(A)
# , k
C = [0 for i in range(k+1)]
#
B = [0 for i in range(N)]
#
for i in range(N):
C[A[i]] += 1
# , ( 0 )
for i in range(1, len(C)):
C[i] += C[i-1]
# A , B
for i in range(N):
#C[A[i]] , B -1
B[C[A[i]]-1] = A[i]
#C -1
C[A[i]] -= 1
return B
空間消費が大きく、10個の配列があると仮定し、最大数が100000であると仮定すると、長さが100000+1の配列を作成する必要がある時間の複雑さはO(n)である.