桶排序

作者: 土人徐 | 来源:发表于2017-04-19 15:20 被阅读0次

1.桶排序特点

1.待排序数服从均匀分布;
2.待排序数可分配到多个单调的部分;
3..待排序数分配到哪个部分实现容易;
4.平局情况下时间复杂度为O(n);
如下图,即把排序数分配到M1,M2 ... M(k-1), M(k)这k分部分,且M(i) < M(j) ,i < j时。


算法-桶排序1.png

2.桶排序介绍

桶排序,假设输入数据服从均匀分布,平局情况下它的时间复杂度为O(n)。把输入数据可以均匀映射到区间[0,1)上,再把区间[0,1)划分为n个相同大小的子区间,该子区间就称为桶,然后将n个输入数分别放到各个桶中,因为输入数是均匀独立分布在[0,1)区间,所以一般不会出现很多数集中落入一个桶内,对每个桶内的数进行排序,然后按桶的大小次序列出每个桶中排序好的数。

3.桶排序的伪代码

BUCKET-SORT(A)
1  n = A.length
2  let B[0..n-1] be a new array
3  for i = 0 to n-1
4    make B[i] an empty list
5  for i = 0 to n-1
6    把A[i]插入到B[f(A[i])]桶中      // 该处的f(x)函数为一一映射函数,把A[i]映射[0,1)区间的某个数
7  for i = 0 to n-1
8    排序B[i]桶内的数
9  列出B[0],B[1] ... B[n-1]桶中的数即为排序好的顺序

实例如下图:


算法-桶排序2.png

4.时间和空间复杂度分析

1.时间复杂度
第1步,时间复杂度1
第2步,时间复杂度n
第3步,时间复杂度n
第4步,时间复杂度1
第5步,时间复杂度n
第6步,时间复杂度1
第7步,时间复杂度n
第8步,时间复杂度期望为2-1/n(这个与排序数均匀分布在各个桶有关)
第9步,时间复杂度n
因此时间复杂度为O(n)。

2.空间复杂度
多了B[0..n-1]且B[i]是一个列表,B[i]的期望空间是1

相关文章

  • 算法基础 排序(一)

    桶排序冒泡排序快速排序 1.桶排序 所谓的桶排序就是列出所有的可能进行排序 小结:这里的桶排序只是简化版的.桶排序...

  • 《数据结构与算法之美》10——排序(三)桶排序、计数排序、基数排

    桶排序 概念 桶排序,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排序之后,再把...

  • 桶排序

    什么是桶排序桶排序是计数排序的衍化桶排序需要创建若干个桶来装元素协助排序。每一个桶(bucket)代表一个区间范围...

  • 桶排序,计数排序和基数排序

    桶排序 桶排序的核心思路 桶排序的核心处理思想是先定义几个有序的桶,将要排序的数组按照桶划分的值的范围分到这几个桶...

  • 桶排序与哈希桶排序

    一.桶排序 算法原理 桶排序 (箱排序)的原理是将待排序序列分到有限数量的桶里面,然后对每个桶再分别排序(可以使用...

  • php-计数排序、基数排序、桶排序

    计数排序、基数排序、桶排序 时间复杂度 O(n) 计数排序 基数排序 桶排序

  • 数组-桶排序

    采用桶排序方式对数组进行排序 桶排序百科:桶排序(Bucket Sort),或者所谓的箱排序是一种非比较排序.工作...

  • 13|桶排序

    桶排序( Bucket sort )首先,我们来看桶排序。桶排序,顾名思义,会用到 “ 桶 ” ,核心思想是将要排...

  • 线性排序

    桶排序 核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排序完之后,再把每个桶里的数...

  • 排序算法(3)- 桶排序、计数排序、基数排序

    桶排序(Bucket sort) 将要排序的数据分到几个有序的桶里,每个桶里面再单独进行排序,最后把每个桶里的数据...

网友评论

      本文标题:桶排序

      本文链接:https://www.haomeiwen.com/subject/nyoczttx.html