計數排序:
- 時間復雜度為O(n+k)
- 空間復雜度為O(n+k)
- 穩定性:穩定
- n為數組元素個數,k為數據最大值
計數排序算法步驟:
- 計數排序不是比較數值排序,是記錄數據出現次數的一種排序算法
- 找出待排數組中最大值
- 額外一個數組記錄待排數組值出現的次數
- 循環打印存儲數值次數的數組下標值
動畫演示:
python實現:
#!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @File :CountingSort.py @Description : @CreatTime :2020/08/21 09:42:54 @Author :Yunhgu @Version :1.0 ''' def countingSort(arr, maxValue): bucketLen = maxValue+1 bucket = [0]*bucketLen for a in arr: if not bucket[a]: bucket[a]=0 bucket[a]+=1 arr.clear() for i in range(len(bucket)): while bucket[i]>0: arr.append(i) bucket[i]-=1 return arr if __name__ == "__main__": int_list = [1,8,6,5,6,6,8,4,8] c = countingSort(int_list,10) print(c)