算法思想: 对每一个输入元素x,确定小于x的元素个数。有了这一信息,就可以把x直接放到它在最终输出数组的位置上。例如有17个元素小于x,则x就属于第18个输出的位置。 算法代码: #filename Counting_Sort.py 计数排序 def Counting_Sort(SrcArray, k): length = len(SrcArray) #C用来SrcArray中的数 C = [0 for i in range(0,k+1)] #C初始化为0 B = [0 for i in range(0,length)] for i in range(0, length): C[SrcArray[i]] += 1 #统计小于或等于i的元素个数 for i in range(1, k+1): C[i] = C[i-1] + C[i] for i in range(length-1, -1, -1): B[C[SrcArray[i]]-1] = SrcArray[i] C[SrcArray[i]] -= 1 for i in range(0,length): SrcArray[i] = B[i] ############################################ #测试 if __name__ == '__main__': srcArray = [2, 5, 3, 0, 2, 3, 0, 3] print 'Before Sorted' print srcArray Counting_Sort(srcArray, 5) print 'After Sorted' print srcArray 算法结果: >>> Before Sorted [2, 5, 3, 0, 2, 3, 0, 3] After Sorted [0, 0, 2, 2, 3, 3, 3, 5] >>> 算法复杂度:O(n)