**计数排序**
核心思想:
找到数组中的最大数和最小数来确定生成数组的大小,根据数组值找到到数组下标与值相同的位置+1,来标识当前值有几个,最后遍历当前数组。
let arr = [1,8,6,50,34,15,12,42,48,30,11];//数组 let arrMin = Math.min(...arr);//获取最小值 let arrMax = Math.max(...arr);//获取最大值 let result=[];//结果存储 let arr_ = new Array(arrMax-arrMin+1).fill(0);//根据最大值、最小值生成纯0数组(其中arrMax-arrMin+1是为了对数组中出现负数的情况进行的处理,如果数组中没有负数直接arrMax+1即可) for(let i = 0 ; i < arr.length ; i++){//遍历数组在值对应的下标对数值+1,我这里作差减去最小值也是为了处理负数情况 arr_[arr[i]-arrMin]++; } for(let j = 0;j<arr_.length;j++){//遍历arr_下标数组来生成最终结果 for(let k = arr_[j];k>0;k--){ result.push(j+arrMin); } } console.log(result,"result");
标签:arrMin,arr,js,计数,let,result,数组,排序,arrMax From: https://www.cnblogs.com/lisir-blogshare/p/16665408.html