Python實現計數排序


計數排序:

  1. 時間復雜度為O(n+k)
  2. 空間復雜度為O(n+k)
  3. 穩定性:穩定
  4. 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM