Python实现的基数排序算法原理与用法实例分析


Posted in Python onNovember 23, 2017

本文实例讲述了Python实现的基数排序算法。分享给大家供大家参考,具体如下:

基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。

实现代码如下:

#-*- 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 "---------------------------------------------------------------"

运行结果:

Python实现的基数排序算法原理与用法实例分析

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python批量下载图片的三种方法
Apr 22 Python
在Python的Django框架上部署ORM库的教程
Apr 20 Python
Python类的用法实例浅析
May 27 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
Python3中exp()函数用法分析
Feb 19 Python
python实现将视频按帧读取到自定义目录
Dec 10 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
python环境下安装opencv库的方法
Mar 05 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 #Python
python简单图片操作:打开\显示\保存图像方法介绍
Nov 23 #Python
python分析作业提交情况
Nov 22 #Python
Python分析学校四六级过关情况
Nov 22 #Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 #Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 #Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 #Python
You might like
转换中文日期的PHP程序
2006/10/09 PHP
php MySQL与分页效率
2008/06/04 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
javascript 得到变量类型的函数
2010/05/19 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
详细讲解Python中的文件I/O操作
2015/05/24 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
python中doctest库实例用法
2020/12/31 Python
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
大学生求职简历的自我评价
2013/10/14 职场文书
小学教师的个人自我鉴定
2013/10/24 职场文书
写好自荐信的要点
2013/11/06 职场文书
电钳专业个人求职信
2014/01/04 职场文书
出纳员岗位责任制
2014/02/11 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
承诺书范本
2015/01/21 职场文书
世界气象日活动总结
2015/02/27 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers