基数排序,平均时间复杂度O(n):

       基数排序依赖于稳定排序,对每个字段按优先级从低到高进行稳定排序,规模为n的数据,d个字段,每个字段可能取值为0~k则时间耗费为Θ(d(n+k))

       基于计数排序的十进制整数基数排序,可以看出计数排序是稳定的,python实现:

import random 
import math

A_range = 100
A = []
for i in range(A_range):
    A.append(random.randint(0,A_range) )

#must make sure the count of columns (named d)

k = 10  #for decimal base
def radix_sort(A,d):
    
    A_sub=[0 for x in range(len(A))]
    for i in range(d):
        for j in range(len(A)):
            A_sub[j] = A[j]/(k**i) % k
        A= counting_sort(A,A_sub,k)
    return A

def counting_sort(A,A_sub,k):
    B=[0 for x in range(len(A))]
    C=[0 for x in range(k)]

    for i in range(len(A)):
        C[A_sub[i]] = C[A_sub[i]]+1

    for j in range(1,k):
        C[j] = C[j] +C[j-1]

  
    for l in range((len(A)-1),-1,-1):
        B[C[A_sub[l]]-1] = A[l]
        C[A_sub[l]] = C[A_sub[l]] -1

    return B

A = radix_sort(A,int(math.log(A_range,k))+1)
print A