您的位置:首页 > 编程语言 > Python开发

基数排序算法-python实现

2015-09-23 11:18 621 查看
#-*- coding: UTF-8 -*-
import numpy as np

def 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 += 1

if __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 "---------------------------------------------------------------"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: