前端算法之计数排序

计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

8.1 算法描述
  • 找出待排序的数组中最大和最小的元素;

  • 统计数组中每个值为i的元素出现的次数,存入数组C的第i项;

  • 对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);

  • 反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1。

    function countingSort(arr, maxValue) {
    var bucket =new Array(maxValue + 1),
    sortedIndex = 0;
    arrLen = arr.length,
    bucketLen = maxValue + 1;

    复制代码
      for (var i = 0; i < arrLen; i++) {
          if (!bucket[arr[i]]) {
              bucket[arr[i]] = 0;
          }
          bucket[arr[i]]++;
      }
    
    
      for (var j = 0; j < bucketLen; j++) {
          while(bucket[j] > 0) {
              arr[sortedIndex++] = j;
              bucket[j]--;
          }
      }
    
    
      return arr;

    }

相关推荐
zzzsde11 小时前
【Linux】线程同步和互斥(5):线程池的实现&&线程安全
linux·运维·服务器·开发语言·算法·安全
weixin_4684668511 小时前
机器学习数据预处理新手实战指南
人工智能·python·算法·机器学习·编程·数据预处理
国科安芯12 小时前
ASM232S电气特性与TIA/EIA-232-F及ITU V.28标准符合性深度分析
单片机·嵌入式硬件·算法·安全·架构
资深流水灯工程师12 小时前
MEMS 加速度计在手表、手环及无人机上的核心应用
算法
阿文的代码库12 小时前
递归与迭代的形式实现
算法·动态规划
春日见12 小时前
自动驾驶数据驱动规控进化之路
运维·服务器·人工智能·深度学习·算法·机器学习·自动驾驶
普贤莲花12 小时前
【【2026年第22周---写于20260531】---好好工作,好好生活】
程序人生·算法·leetcode·生活
Bingorl12 小时前
机器学习之聚类算法
算法·机器学习·聚类
CS创新实验室12 小时前
数据结构:程序世界的“收纳术“
数据结构
小欣加油12 小时前
leetcode2126 摧毁小行星
数据结构·c++·算法·leetcode·职场和发展