当前位置:首页 > JavaScript

js实现基数算法

2026-01-30 22:42:40JavaScript

基数排序(Radix Sort)简介

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

js实现基数算法

实现基数排序的步骤

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

js实现基数算法

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的幂次),排序后再转换回去。

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

相关文章

php实现算法

php实现算法

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

php 实现算法

php 实现算法

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

用JS实现快速排序算法

用JS实现快速排序算法

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

js锚点定位算法实现

js锚点定位算法实现

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

js实现算法

js实现算法

JavaScript 实现常见算法的方法 排序算法 快速排序的实现: function quickSort(arr) { if (arr.length <= 1) return arr;…

算法js实现

算法js实现

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