基数排序算法-python实现
1 #-*- coding: UTF-8 -*- 2 import numpy as np 3 4 def RadixSort(a): 5 i = 0 #初始为个位排序 6 n = 1 #最小的位数置为1(包含0) 7 max = np.max(a) #得到带排序数组中最大数 8 while max/(10**n) > 0: #得到最大数是几位数 9 n += 1 10 while i < n: 11 bucket = {} #用字典构建桶 12 for x in xrange(0,10): 13 bucket.setdefault(x, []) #将每个桶置空 14 for x in a: #对每一位进行排序 15 radix =(x / (10**i)) % 10 #得到每位的基数 16 bucket[radix].append(x) #将对应的数组元素加入到相应位基数的桶中 17 j = 0 18 for k in xrange(0, 10): 19 if len(bucket[k]) != 0: #若桶不为空 20 for y in bucket[k]: #将该桶中每个元素 21 a[j] = y #放回到数组中 22 j += 1 23 i += 1 24 25 if __name__ == '__main__': 26 a = np.random.randint(0, 1000, size = 10) 27 print "Before sorting..." 28 print "---------------------------------------------------------------" 29 print a 30 print "---------------------------------------------------------------" 31 RadixSort(a) 32 print "After sorting..." 33 print "---------------------------------------------------------------" 34 print a 35 print "---------------------------------------------------------------"
作者:Alex Yu
出处:http://www.cnblogs.com/biaoyu/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。