桶排序JavaScript

// 桶排序
// 公式
// 桶的数量 = ((最大值 - 最小值)/ 数组长度) + 1
// 元素所属桶的位置 =( 元素大小 - 最小值)/ 数组长度
function bucketSort(arr) {
    let min = Math.min(...arr);
    let max = Math.max(...arr);
    // 代表桶的数量
    let bucketSize = Math.floor((max - min) / arr.length) + 1;
    // 初始化这么多个桶为一个数组
    let bucketArray = new Array(bucketSize);
    for (let i = 0; i < arr.length; i++) {
        // 获取元素应该放置的桶的位置
        const index = parseInt((arr[i] - min) / arr.length);
        // 将对应元素塞入桶内
        if (Array.isArray(bucketArray[index])) {
            bucketArray[index].push(arr[i]);
        } else {
            // 初始化每个桶为一个数组
            bucketArray[index] = [];
            bucketArray[index].push(arr[i]);
        }
    }
    // 对每个桶中的元素进行排序
    for (let i = 0; i < bucketSize; i++) {
        bucketArray.sort();
    }
    // 将桶数组打平(是个二维数组)
    return bucketArray.flat();
}
console.log(bucketSort([1, 20, 31, 58, 46, 5, 6, 7, 21, 32, 44, 59]));

Original: https://www.cnblogs.com/beileixinqing/p/16540635.html
Author: 蓓蕾心晴
Title: 桶排序JavaScript

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536533/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Javascript正则分组命名

    Javascript的正则分组不支持命名,只好自己搞了一个。先把命名存入数组,然后匹配。 唉~~~有更好的解决方案么? 代码: javascript;gutter:false; v…

    JavaScript 2023年5月29日
    079
  • 关于JavaScript的函数总结

    function sum(num){ return num + 100 } function sum(num){ return num + 200 } let totle = su…

    JavaScript 2023年5月29日
    050
  • JavaScript和ASP.NET的传值

    因项目需要,最近一段时间里对于js的开发有了一定的了解。在基于ASP.NET的开发中,经常性的需要JS脚本来增加一些客户端的控制,比如限制输入字符,日期控件等等。一般这样的控制基本…

    JavaScript 2023年5月29日
    042
  • JavaScript高级用法一之事件响应与网页交互

    事件会在页面加载完成后立即发生,同时执行被调用的程序。注意:1. 加载页面时,触发onload事件,事件写在标签内。 此节的加载页面,可理解为打开一个新页面时。 如下代码,当加载一…

    JavaScript 2023年5月29日
    091
  • 用JavaScript玩转游戏编程(一)掉宝类型概率

    问题定义 游戏(和一些模拟程序)经常需要使用随机数,去应付不同的游戏(或商业)逻辑。本文分析一个常见问题:有N类物件,设第i类物件的出现概率为P(X=i),如何产生这样的随机变量X…

    JavaScript 2023年5月29日
    062
  • JavaScript高级用法三之浏览器对象

    function validB (){ var u_agent =navigator .userAgent ; var B_name =”Failed to ident…

    JavaScript 2023年5月29日
    053
  • 转: JavaScript函数式编程(二)

    上一篇文章里我们提到了纯函数的概念,所谓的纯函数就是,对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用,也不依赖外部环境的状态(我偷懒复制过来的)。 但是实际的编程…

    JavaScript 2023年5月29日
    057
  • JavaScript严谨模式(Strict Mode)

    ECMAScript5中引入的严格模式,通过让JavaScript运行环境对一些开发过程中最常见和不易发现的错误做出和当前不同的处理,来让开发者拥有一个”更好&#822…

    JavaScript 2023年5月29日
    051
  • JavaScript统计数据处理(7)- 一维数据生成

    JavaScript是一种广泛使用网页编程语言,在浏览器中运用JavaScript技术处理统计数据具有最佳的推广传播效果 一维数据又称一元数据,是由对等关系的有序或无序信息构成,采…

    JavaScript 2023年5月29日
    099
  • javascript和C#比较

    C#和javascript有很多相似的地方,比如: 序列化 C#序列化 2.序列化为字符串 JavaScriptSerializer jss = new JavaScriptSer…

    JavaScript 2023年5月29日
    067
  • 走进JavaScript——重拾对象

    Original: https://www.cnblogs.com/pssp/p/6919286.htmlAuthor: 追梦子Title: 走进JavaScript——重拾对象

    JavaScript 2023年5月29日
    046
  • 归并排序 JavaScript

    归并排序使用 分而治之的概念对给定的元素列表进行排序。它将问题分解为较小的子问题,直到它们变得足够简单以至可以直接解决为止。 以下是归并排序的步骤: 1、将给定的列表分为两半(如果…

    JavaScript 2023年5月29日
    045
  • 面向对象的JavaScript-006-Function.prototype.apply()的3种作用

    1. 1 // Function.prototype.apply()的作用 2 // 1.Using apply to chain con…

    JavaScript 2023年5月29日
    056
  • JavaScript 学习-44.jQuery 遍历查找方法

    通过 jQuery 遍历,从被查找当前元素开始,在家族树中向上移动(祖先),向下移动(子孙),水平移动(兄弟),这种移动被称为对 DOM 进行遍历。 向上遍历 DOM 树,查找父元…

    JavaScript 2023年5月29日
    060
  • JavaScript Table排序

    序二(09/05/03) 近来还是那么忙,趁五一更新一下程序吧。这个版本主要增加和改进了以下东西:1,对字符串改用localeCompare来比较;2,一次排序中能使用多个排序对象…

    JavaScript 2023年5月29日
    065
  • JavaScript + PHP 实现刷新继续保持倒计时的按钮

    场景:发送一个验证码到手机,当验证码发出时,会提示隔 1 分钟之后可以再次发送。通常有这几种方式防止恶意请求,一是再次发送之前需要输入验证码,二是在指定的时间间隔之内不能再次发送。…

    JavaScript 2023年5月29日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球