计数排序算法,仅针对整数,且能确定元素的范围,平均时间复杂度O(n):
python 实现:
import random
A_range = 10000
A=[x for x in range(10000)]
random.shuffle(A)
#only for integer and must in range 0~k
def counting_sort(A,k):
B=[0 for x in range(len(A))]
C=[0 for x in range(k)]
for i in range(len(A)):
C[A[i]] = C[A[i]]+1
for j in range(k):
C[j] = C[j] +C[j-1]
for l in range((len(A)-1),-1,-1):
B[C[A[l]]-1] = A[l]
C[A[l]] = C[A[l]] -1
return B
B=counting_sort(A,A_range+1)
print B