本文實例講述了Python實現的基數排序算法。分享給大家供大家參考,具體如下:
基數排序(radix sort)屬于“分配式排序”(distribution sort),又稱“桶子法”(bucket sort)或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些“桶”中,藉以達到排序的作用,基數排序法是屬于穩定性的排序,其時間復雜度為O (nlog(r)m),其中r為所采取的基數,而m為堆數,在某些時候,基數排序法的效率高于其它的穩定性排序法。
實現代碼如下:
#-*- coding: UTF-8 -*-import numpy as npdef RadixSort(a):  i = 0                       #初始為個位排序  n = 1                      #最小的位數置為1(包含0)  max = np.max(a)            #得到帶排序數組中最大數  while max/(10**n) > 0:       #得到最大數是幾位數    n += 1  while i < n:    bucket = {}               #用字典構建桶    for x in xrange(0,10):      bucket.setdefault(x, [])  #將每個桶置空    for x in a:                #對每一位進行排序      radix =(x / (10**i)) % 10  #得到每位的基數      bucket[radix].append(x) #將對應的數組元素加入到相應位基數的桶中    j = 0    for k in xrange(0, 10):      if len(bucket[k]) != 0:    #若桶不為空        for y in bucket[k]:     #將該桶中每個元素          a[j] = y            #放回到數組中          j += 1    i += 1if __name__ == '__main__':  a = np.random.randint(0, 1000, size = 10)  print "Before sorting..."  print "---------------------------------------------------------------"  print a  print "---------------------------------------------------------------"  RadixSort(a)  print "After sorting..."  print "---------------------------------------------------------------"  print a  print "---------------------------------------------------------------"運行結果:

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
| 
 
 | 
新聞熱點
疑難解答