前端算法之计数排序

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

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;

    }

相关推荐
v_34836087623 小时前
Android native端 堆栈打印
android·算法
residual_fan3 小时前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
GreenTea4 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
深圳满意度咨询5 小时前
医院满意度数字化测评系统:从数据采集到智能决策的技术实践
算法
xiangyun616 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun616 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan7 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
蓝速科技7 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
302wanger7 小时前
推荐下我的两个AI信息源
算法
索尔~古德曼8 小时前
CF——错题的集合
算法