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实现的二叉树算法和kmp算法实例
Apr 25 Python
Python两个整数相除得到浮点数值的方法
Mar 18 Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
详谈python http长连接客户端
Jun 12 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
200行python代码实现2048游戏
Jul 17 Python
python ftplib模块使用代码实例
Dec 31 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
python如何写try语句
Jul 14 Python
使用Python+Appuim 清理微信的方法
Jan 26 Python
Python爬虫基础初探selenium
May 31 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+DBM的同学录程序(5)
2006/10/09 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
python实现的简单猜数字游戏
2015/04/04 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
python实现用户管理系统
2018/01/10 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
python七夕浪漫表白源码
2019/04/05 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
2015元旦标语横幅
2014/12/09 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL