Python实现的桶排序算法示例


Posted in Python onNovember 29, 2017

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

桶排序也叫计数排序,简单来说,就是将数据集里面所有元素按顺序列举出来,然后统计元素出现的次数。最后按顺序输出数据集里面的元素。

但是桶排序非常浪费空间, 比如需要排序的范围在0~2000之间, 需要排序的数是[3,9,4,2000], 同样需要2001个空间

注意: 桶排序不能排序小数

以下为从小到大代码实现

#!/usr/bin/env python
# coding:utf-8
def bucketSort(nums):
  # 选择一个最大的数
  max_num = max(nums)
  # 创建一个元素全是0的列表, 当做桶
  bucket = [0]*(max_num+1)
  # 把所有元素放入桶中, 即把对应元素个数加一
  for i in nums:
    bucket[i] += 1
  # 存储排序好的元素
  sort_nums = []
  # 取出桶中的元素
  for j in range(len(bucket)):
    if bucket[j] != 0:
      for y in range(bucket[j]):
        sort_nums.append(j)
  return sort_nums
nums = [5,6,3,2,1,65,2,0,8,0]
print "三水点靠木测试结果:"
print bucketSort(nums)
"""
[0, 0, 1, 2, 2, 3, 5, 6, 8, 65]
"""

运行结果:

Python实现的桶排序算法示例

总体来说,桶排序的优点就是特别快,真的是特别快!特别快!特别块!而缺点就是特别耗资源,如果数据取值的范围是0---1010, 就要申请一个大小为1010的数组,想想这得多耗内存空间。阔怕!且桶排序只能排序大于零的整数。

PS:关于排序算法的详细说明还可参考本站在线工具:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具
http://tools.3water.com/aideddesign/paixu_ys

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

Python 相关文章推荐
python使用win32com在百度空间插入html元素示例
Feb 20 Python
Python不规范的日期字符串处理类
Jun 10 Python
Python读大数据txt
Mar 28 Python
python编程实现归并排序
Apr 14 Python
pyqt5简介及安装方法介绍
Jan 31 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
python super函数使用方法详解
Feb 14 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
Python如何对齐字符串
Jul 30 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 #Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 #Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 #Python
JSONLINT:python的json数据验证库实例解析
Nov 28 #Python
详解如何使用Python编写vim插件
Nov 28 #Python
从头学Python之编写可执行的.py文件
Nov 28 #Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 #Python
You might like
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
php木马攻击防御之道
2008/03/24 PHP
php 无法载入mysql扩展
2010/03/12 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
php输出xml属性的方法
2015/03/19 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
原生js实现日期联动
2015/01/12 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
深入理解python函数递归和生成器
2016/06/06 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python 实现list或string按指定分段
2019/12/25 Python
Django设置Postgresql的操作
2020/05/14 Python
python logging模块的使用
2020/09/07 Python
python实现图片素描效果
2020/09/26 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
花卉与景观设计系大学生求职信
2013/10/01 职场文书
高三英语教学反思
2014/01/13 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
医疗纠纷协议书
2014/04/16 职场文书
运动会跳远广播稿
2015/08/19 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技