• 技术文章 >web前端 >js教程

    JavaScript中的桶排序详解

    韦小宝韦小宝2018-03-14 14:28:37原创1743
    本篇文章讲述了JavaScript中的桶排序,大家对JavaScript中的桶排序不了解的话或者对JavaScript中的桶排序感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧

    桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。

    为了使桶排序更加高效,我们需要做到这两点:

    1、在额外空间充足的情况下,尽量增大桶的数量

    2、使用的映射函数能够将输入的N个数据均匀的分配到K个桶中

    同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。

    什么时候最快


    当输入的数据可以均匀的分配到每一个桶中

    什么时候最慢


    当输入的数据被分配到了同一个桶中

    桶排序JavaScript代码实现:

    function bucketSort(arr, bucketSize) {  
        if (arr.length === 0) {  
          return arr;  
        }  
      
        var i;  
        var minValue = arr[0];  
        var maxValue = arr[0];  
        for (i = 1; i < arr.length; i++) {  
          if (arr[i] < minValue) {  
              minValue = arr[i];                //输入数据的最小值  
          } else if (arr[i] > maxValue) {  
              maxValue = arr[i];                //输入数据的最大值  
          }  
        }  
      
        //桶的初始化  
        var DEFAULT_BUCKET_SIZE = 5;            //设置桶的默认数量为5  
        bucketSize = bucketSize || DEFAULT_BUCKET_SIZE;  
        var bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1;     
        var buckets = new Array(bucketCount);  
        for (i = 0; i < buckets.length; i++) {  
            buckets[i] = [];  
        }  
      
        //利用映射函数将数据分配到各个桶中  
        for (i = 0; i < arr.length; i++) {  
            buckets[Math.floor((arr[i] - minValue) / bucketSize)].push(arr[i]);  
        }  
      
        arr.length = 0;  
        for (i = 0; i < buckets.length; i++) {  
            insertionSort(buckets[i]);                      //对每个桶进行排序,这里使用了插入排序  
            for (var j = 0; j < buckets[i].length; j++) {  
                arr.push(buckets[i][j]);                        
            }  
        }  
      
        return arr;}

    以上就是本篇文章的所有内容,大家要是还不太了解的话,可以自己多实现两边就很容易掌握了哦!

    相关推荐:
    PHP实现桶排序算法实例分享

    以上就是JavaScript中的桶排序详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:JavaScript js 详解
    上一篇:JS设计模式之原型模式详解 下一篇:javascript如何实现计算器功能
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 深入了解Angular中的依赖注入模式(玩法案例)• 如何安装并管理多版本node?方法介绍• JavaScript创建多个对象方法总结• 聊聊node+multiparty怎么实现文件上传• 简单聊聊JavaScript中的事件监听
    1/1

    PHP中文网