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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
Python中subprocess的简单使用示例
Jul 28 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
python sys.argv[]用法实例详解
May 25 Python
Python读写文件基础知识点
Jun 10 Python
django数据库自动重连的方法实例
Jul 21 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
python多线程方法详解
Jan 18 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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/12/05 PHP
[转帖]PHP世纪万年历
2006/12/06 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
彻底解决Python包下载慢问题
2020/11/15 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
导师就业推荐信范文
2014/05/22 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
优秀党员先进材料
2014/12/18 职场文书
天河观后感
2015/06/11 职场文书
同学会演讲稿
2019/04/02 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript