每天一点算法-桶排序-(Day2)

简介: 每天一点算法-桶排序-(Day2)

介绍

桶排序最简单的排序算法,举例说明:有场景下有数据范围是0~n,我们假设已经有n+1个桶用于排序,将需要被排序的数据一个个放入对应的桶的序号中,即数据 3被放入第3个桶,数据67被放入第67个桶,一个桶可装多个数;最终从头到尾(升序)或者从尾到头(降序)找出桶里的数据。

例子

假设有一个待排序数组[77, 6, 37, 96, 34, 6,14], 桶排序的js实现如下(升序):

function sort(arr){
   var buckets = [], //辅助桶
       result = []; //用于保存结果

   //待排序数据依次放入桶,这里遍历n次
   arr.forEach(function(item){
       //一个桶可以装多个数,所以用数组装
       if(buckets[item]) buckets[item].push(item);
       else buckets[item] = [item]; 
   });

   //将桶里从头到尾连起来输出,这里遍历n次
   buckets.forEach(function(item){
       if(item) result = result.concat(item);
   })
   return result;
}

var arr = [77, 6, 37, 96, 34, 6, 14];
console.log(sort(arr)); // =>[6, 6, 14, 34, 37, 77, 96]

时间复杂度

大O阶计算f(n) = n + n = 2n,所以时间复杂度为O(n)。虽然时间上消耗还算ok,但桶排序有个致命的缺点:浪费空间。

感谢阅读!欢迎关注!持续更新中...
相关文章
|
11月前
|
搜索推荐 算法 测试技术
C++桶排序算法的应用:存在重复元素 III
C++桶排序算法的应用:存在重复元素 III
|
1月前
|
存储 搜索推荐 算法
Python中的桶排序算法
总结而言,桶排序是一个非常高效的排序算法,尤其适用于数据分布均匀的情况。正确实现和使用桶排序可以在特定情况下获得极高的排序速度。
10 0
|
2月前
|
算法 搜索推荐 C#
|
3月前
|
机器学习/深度学习 并行计算 搜索推荐
程序技术好文:桶排序算法及其Java实现
程序技术好文:桶排序算法及其Java实现
27 0
|
3月前
|
算法 C语言
数据结构和算法——桶排序和基数排序(图示、伪代码、多关键字排序,基数排序代码)
数据结构和算法——桶排序和基数排序(图示、伪代码、多关键字排序,基数排序代码)
20 0
|
4月前
|
算法 前端开发 搜索推荐
前端算法之桶排序
前端算法之桶排序
21 1
|
4月前
|
存储 搜索推荐 Java
【数据结构排序算法篇】----桶排序【实战演练】
【数据结构排序算法篇】----桶排序【实战演练】
53 5
|
4月前
|
存储 搜索推荐
常见排序算法原理——第三部分(桶排序、计数排序、基数排序)
常见排序算法原理——第三部分(桶排序、计数排序、基数排序)
|
4月前
|
算法 搜索推荐 C语言
【408数据结构与算法】—基数排序(桶排序)(二十三)
【408数据结构与算法】—基数排序(桶排序)(二十三)
|
10月前
|
搜索推荐 算法 Python
Python算法——桶排序
Python算法——桶排序
72 0