当前位置:首页 > JavaScript

js实现基数算法

2026-01-30 22:42:40JavaScript

基数排序(Radix Sort)简介

基数排序是一种非比较型整数排序算法,通过逐位分配和收集实现排序。适用于整数或固定格式字符串,时间复杂度为O(nk),其中n是元素数量,k是数字位数。

实现基数排序的步骤

确定最大数字位数 找出数组中最大数字的位数,确定需要进行多少轮排序。例如,数组[3, 1, 44, 12]的最大数字是44,有2位。

function getMaxDigit(arr) {
  let max = Math.max(...arr);
  return String(max).length;
}

按位排序(从低位到高位) 使用计数排序对每一位进行稳定排序。创建10个桶(0-9),根据当前位的数字将元素分配到对应桶中,再按顺序收集回原数组。

function radixSort(arr) {
  const maxDigit = getMaxDigit(arr);
  let buckets = Array.from({ length: 10 }, () => []);

  for (let i = 0; i < maxDigit; i++) {
    // 分配
    for (let num of arr) {
      const digit = getDigit(num, i);
      buckets[digit].push(num);
    }
    // 收集
    arr = [].concat(...buckets);
    buckets = Array.from({ length: 10 }, () => []);
  }
  return arr;
}

function getDigit(num, place) {
  return Math.floor(Math.abs(num) / Math.pow(10, place)) % 10;
}

处理负数的情况

若数组包含负数,可先分离正负数,分别排序后合并。负数需取绝对值并按高位到低位排序,最后反转结果。

function radixSortWithNegative(arr) {
  const positives = arr.filter(num => num >= 0);
  const negatives = arr.filter(num => num < 0).map(num => -num);

  const sortedPositives = radixSort(positives);
  const sortedNegatives = radixSort(negatives).reverse().map(num => -num);

  return [...sortedNegatives, ...sortedPositives];
}

示例测试

console.log(radixSort([3, 1, 44, 12])); // [1, 3, 12, 44]
console.log(radixSortWithNegative([-3, 1, -44, 12])); // [-44, -3, 1, 12]

注意事项

  • 基数排序对数据格式要求严格,需确保所有元素位数相同或能补齐。
  • 对于浮点数,需转换为整数处理(如乘以10的幂次),排序后再转换回去。

js实现基数算法

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

相关文章

react diff算法实现

react diff算法实现

React Diff 算法实现原理 React 的 Diff 算法(Reconciliation)是虚拟 DOM(Virtual DOM)更新的核心机制,通过高效比较新旧虚拟 DOM 树的差异,最小化…

php实现算法

php实现算法

PHP 实现常见算法的方法 PHP 可以实现多种算法,包括排序、搜索、递归、动态规划等。以下是几种常见算法的 PHP 实现方式。 冒泡排序(Bubble Sort) 冒泡排序通过多次遍历数组,每…

php 实现算法

php 实现算法

PHP 实现常见算法的方法 PHP 作为一门服务器端脚本语言,可以实现多种算法。以下是一些常见算法的 PHP 实现示例。 排序算法 冒泡排序 function bubbleSort($arra…

php实现欧几里得算法实现

php实现欧几里得算法实现

欧几里得算法简介 欧几里得算法(辗转相除法)用于计算两个非负整数的最大公约数(GCD)。其核心思想是通过反复用较小数除较大数取余,直到余数为0,此时的除数即为最大公约数。 PHP实现方法 以下是用P…

php 实现共识算法

php 实现共识算法

PHP 实现共识算法的基础方法 共识算法是分布式系统中确保数据一致性的核心机制,PHP 可通过特定设计实现简化版本的共识逻辑。以下是常见实现方式: 基于Paxos的简化实现 Paxos 算法的 PH…