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

作者: 岛民小强 | 来源:发表于2018-12-30 22:07 被阅读12次

介绍

桶排序最简单的排序算法,举例说明:有场景下有数据范围是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,但桶排序有个致命的缺点:浪费空间。

感谢阅读!欢迎关注!持续更新中...

相关文章

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 浅谈排序算法

    排序算法有很多种,今天先谈谈一些简单的排序算法。包括桶排序、冒泡排序和快速排序算法。后期总结各种排序算法。 桶排序...

  • 排序算法(十一)桶排序

    排序算法(十一)桶排序   桶排序(Bucket sort)是计数排序改进版,同样属于非比较排序,该算法的基本思想...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

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

    介绍 桶排序是最简单的排序算法,举例说明:有场景下有数据范围是0~n,我们假设已经有n+1个桶用于排序,将需要被排...

  • 排序算法三(桶,计数,基数)

    桶排序,计数排序,基数排序算法的时间复杂度都是线性的,所以把这类排序算法叫作线性排序。 桶排序 概念:将要排序的数...

  • 桶排序与哈希桶排序

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

  • noip普及组3:排序算法

    排序算法 ①冒泡排序:O() ②插入排序:O() ③选择排序:O() ④桶排序 ⑤sort排序

  • 线性排序

    一、线性排序算法介绍 线性排序算法包括桶排序、计数排序、基数排序。 线性排序算法的时间复杂度为O(n)。 此3种排...

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

    一、线性排序算法介绍 线性排序算法包括桶排序、计数排序、基数排序。 线性排序算法的时间复杂度为O(n)。 此3种排...

网友评论

    本文标题:每天一点算法-桶排序 (Day2)

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