• 基数排序算法-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 "---------------------------------------------------------------"
  • 相关阅读:
    电梯调度之调研报告
    小作业之测试篇
    求固定数组的最大子数组
    四则运算之C++实现篇
    四则运算2之设计思路篇
    轻松记账工程冲刺第十天
    轻松记账工程冲刺第九天
    轻松记账工程冲刺第八天
    简评QQ拼音输入法
    轻松记账工程冲刺第七天
  • 原文地址:https://www.cnblogs.com/biaoyu/p/4831648.html
Copyright © 2020-2023  润新知