1. 程式人生 > >【程序員筆試面試必會——排序②】Python實現 計數排序、基數排序

【程序員筆試面試必會——排序②】Python實現 計數排序、基數排序

16px 最大 元素 size medium log n) python實現 count

一、計數排序

概要:  

  時間復雜度O(n),空間復雜度O(k),k是輸入序列的值的範圍(最大值-最小值),是穩定的。計數排序一般用於已知輸入值的範圍相對較小,比如給公司員工的身高體重信息排序。

思路:

   輸入數組A為{3,5,1,2,4,3},值的範圍是1~5,所以創建5個桶,序號1,2,3,4,5。裝桶時遍歷一遍輸入數組,A[0]=3,把它放到3號桶;A[1]=5,放到5號桶;1放到1號桶……最後3放到3號桶。現在三號桶的值為2,其他桶的值為1,再遍歷一遍桶數組,按順序把桶倒出,元素被倒出的順序就是排序的順序了。

Python實現:

# coding:utf-8
class CountingSort:
    
def countingSort(self, A, m): result = [] A_min = min(A) A_max = max(A) buckets_len = A_max - A_min + 1 buckets = [0] * buckets_len # 創建桶 # 裝桶 for n in A: buckets[n-A_min] += 1 # 桶倒出 for i in xrange(buckets_len): value
= i + A_min n = buckets[i] result += [value] * n return result l = [54, 35, 48, 36, 27, 12, 44, 44, 8, 14, 26, 17, 28] print CountingSort().countingSort(l, len(l))

二、基數排序

 

【程序員筆試面試必會——排序②】Python實現 計數排序、基數排序