前言

桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间( Θ ( n ) {\displaystyle \Theta (n)} {\displaystyle \Theta (n)}(大O符号))。但桶排序并不是比较排序,他不受到 O ( n log ⁡ n ) {\displaystyle O(n\log n)} {\displaystyle O(n\log n)}下限的影响。

桶排序以下列程序进行:

  • 设置一个定量的数组当作空桶子。
  • 寻访序列,并且把项目一个一个放到对应的桶子去。
  • 对每个不是空的桶子进行排序。
  • 从不是空的桶子里把项目再放回原来的序列中。

代码实现

# coding:utf-8# !/usr/bin/env python# Time: 2018/8/9 9:31# Author: sty# File: bucket_sort.pydef bucket_sort(array, n):# 1.创建n个空桶new_list = [[] for _ in range(n)]# 2.把arr[i] 插入到bucket[n*array[i]]for data in array:index = int(data * n)new_list[index].append(data)# 3.桶内排序for i in range(n):new_list[i].sort()# 4.产生新的排序后的列表index = 0for i in range(n):for j in range(len(new_list[i])):array[index] = new_list[i][j]index += 1return arraydef main():array = [0.897, 0.565, 0.656, 0.1234, 0.665, 0.3434]n = len(array)array = bucket_sort(array, n)print(array)if __name__ == '__main__':main()

参考链接

https://www.geeksforgeeks.org/bucket-sort-2/

python 实现桶排序相关推荐

  1. Python实现桶排序

    Python实现桶排序 一.桶排序简介 桶排序(Bucket sort)是一种通过分桶和合并实现的排序算法,又被称为箱排序. 桶排序先将数据分到有限数量的桶里,然后对每一个桶内的数据进行排序(桶内排序 ...

  2. 计数排序、桶排序和基数排序的运算性能对比及总结区别(附python代码)

    首先证明一波排序算法的运算性能,如下图.对于50万个数据的无序列表,时间复杂度为的桶排序和计数排序明显比复杂度为的归并排序和快速排序性能好至少一个数量级. 1. 计数排序  1.1 基本原理:首先确定 ...

  3. 计数排序与桶排序python实现

    计数排序与桶排序python实现 计数排序 计数排序原理: 找到给定序列的最小值与最大值 创建一个长度为最大值-最小值+1的数组,初始化都为0 然后遍历原序列,并为数组中索引为当前值-最小值的值+1 ...

  4. 十大经典排序算法(图解与代码)——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序(Python and Java)

    排序 重新排列表中的元素,使表中的元素按照关键字递增或者递减 内部排序: 指在排序期间,元素全部存放在内存中的排序 外部排序: 指在排序期间元素无法全部同时存放在内存中,必须在排序的过程中根据要求不断 ...

  5. [数据结构][Python]鸡尾酒排序、桶排序

    鸡尾酒排序: #!/usr/bin/python def _cocktail_sort(the_list):the_len = len(the_list)if the_len <2:#0和1pr ...

  6. 计数排序和桶排序——python和javascript实现

    计数排序 python版 不稳定计数排序 # 不稳定计数排序 def count_sort(arr):max,min = findMaxAndMin(arr)space = max - mincoun ...

  7. Python实现八大排序算法(转载)+ 桶排序(原创)

    插入排序 核心思想 代码实现 希尔排序 核心思想 代码实现 冒泡排序 核心思想 代码实现 快速排序 核心思想 代码实现 直接选择排序 核心思想 代码实现 堆排序 核心思想 代码实现 归并排序 核心思想 ...

  8. Python 桶排序

    Python 桶排序 线性排序: 线性排序即排序算法的时间复杂度是线性的,也就是 O(n).桶排序.计数排序.基数排序这三个算法是不基于比较的排序算法,都不涉及元素之间的比较操作. 桶排序(Bucke ...

  9. 桶排序python实现

    # 桶排序要求:# 有几个输入数据,要求对其进行从小到大或者从大到小进行排序# 思路:# 首先建立需要的桶,然后每个位置初始化,接着将需要处理的数据根据数值在相应位置设置值为这个值出现的次数# 使用字 ...

最新文章

  1. php受保护的成员方法,PHP继承和受保护的成员可见性
  2. 构造函数= default;_Python Collections之defaultdict 和 default_factory关系
  3. Android服务器django,Android发送发送请求到django服务器csrf失败
  4. msdn画圆弧函数_精确之美——用TikZ画硬盘示意图
  5. 阿里《Java手册》做一个有技术情怀的人
  6. 大数——大数阶乘(hdu1042)
  7. Linux 服务器高级编程ET LT代码
  8. linux下./xx做了什么?
  9. 文本视图(UITextView)占位符Swift
  10. snap占用/dev/loop0-/dev/loop11占用100%
  11. Linux视频编解码库,Ubuntu 18.04 FFMPEG最新版本安装总结
  12. bjui获取当前页签或者是dialog容器
  13. 易灵思FPGA-软件Efinity和Modelsim联仿设置
  14. Vue的内置指令:v-if和v-show的区别
  15. 免费的网站地图生成器,sitemap支持xml、html、txt生成绝对站长工具必备使用教程
  16. 百度影棒1刷成Android系统,百度影棒2S最简单的刷机方法
  17. 安装原生Win7-SP1系统
  18. [JOI 2014 Final]裁剪线
  19. mySQL下载后的初次使用
  20. Qt 调用ftd2x API上位机踩坑指南

热门文章

  1. 2022-2028年中国微藻行业市场调查研究及前瞻分析报告
  2. hexo-github-博客搭建指南
  3. pycharm重点插件
  4. LeetCode简单题之按键持续时间最长的键
  5. Pass Infrastructure基础架构(下)
  6. 2021年大数据Hadoop(二十九):​​​​​​​关于YARN常用参数设置
  7. DOM相关内容(课程来源:B站 后盾人)
  8. java 抽象方法 虚方法的区别_声明抽象类(纯虚方法)会大幅增加二进制大小
  9. Android CheckBox 点击的时候没有效果
  10. Android TextView 去除顶部和底部留白(上下的间距有空白问题处理)