当前位置:首页 > JavaScript

js实现基数算法

2026-04-04 14:30:14JavaScript

基数排序(Radix Sort)实现

基数排序是一种非比较型整数排序算法,通过逐位分配和收集实现排序。以下是JavaScript的实现方法及说明:

算法原理

基数排序基于键值的每位数字进行排序,从最低位(LSD)或最高位(MSD)开始。通常使用桶分配和收集的步骤重复进行,直到所有位数处理完毕。

js实现基数算法

JavaScript实现代码

function radixSort(arr) {
    const maxNum = Math.max(...arr) * 10;
    let divisor = 10;

    while (divisor < maxNum) {
        let buckets = Array.from({ length: 10 }, () => []);

        for (let num of arr) {
            buckets[Math.floor((num % divisor) / (divisor / 10))].push(num);
        }

        arr = [].concat(...buckets);
        divisor *= 10;
    }

    return arr;
}

代码解析

  1. 初始化参数

    js实现基数算法

    • maxNum确定循环次数,为数组中最大数的10倍(避免遗漏位数)。
    • divisor初始为10,用于提取当前位的数字。
  2. 分配桶

    • 创建10个空桶(对应数字0-9)。
    • 计算当前位的值:(num % divisor) / (divisor / 10),将数字放入对应桶。
  3. 收集桶

    • 按桶顺序合并所有数字,形成新的数组。
    • divisor乘以10,处理下一位。

示例调用

const array = [170, 45, 75, 90, 802, 24, 2, 66];
console.log(radixSort(array)); // 输出 [2, 24, 45, 66, 75, 90, 170, 802]

时间复杂度

  • 最佳/平均/最差:O(nk),其中n是元素数量,k是最大数字的位数。
  • 空间复杂度为O(n + k),需要额外的桶空间。

注意事项

  • 仅适用于整数排序,负数需特殊处理(如偏移量转换)。
  • 对于位数差异大的数组,可能需补零或调整逻辑。

标签: 基数算法
分享给朋友:

相关文章

js实现贪心算法

js实现贪心算法

贪心算法简介 贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法。贪心算法常用于解决优化问题,如最短路径、最小生成树等。 贪心算法的基本步骤 贪心算…

用js来实现所有算法

用js来实现所有算法

在 JavaScript 中实现所有算法是一个庞大的任务,因为算法种类繁多,涵盖数据结构、排序、搜索、图论、动态规划等多个领域。以下是部分常见算法的 JavaScript 实现示例,供参考: 排序算…

用JS实现快速排序算法

用JS实现快速排序算法

快速排序的原理 快速排序是一种分治算法,通过选择一个基准元素(pivot)将数组分为两部分,一部分小于基准,另一部分大于基准,然后递归地对这两部分进行排序。 代码实现 function quic…

js锚点定位算法实现

js锚点定位算法实现

实现锚点定位的基本方法 使用Element.scrollIntoView()方法是最简单的实现方式。该方法将滚动页面使指定元素出现在视口中。 document.getElementById('tar…

算法js实现

算法js实现

JavaScript 算法实现基础 JavaScript 作为一门灵活且强大的编程语言,能够实现各种常见算法。以下是一些基础算法的 JavaScript 实现示例。 排序算法 快速排序是一种高效的排…

js 签名算法实现

js 签名算法实现

签名算法概述 签名算法通常用于确保数据的完整性和真实性,常见于API请求、数据传输等场景。JavaScript中可以通过多种方式实现签名算法,如HMAC、RSA等。 HMAC签名实现 HMAC(Ha…