首页 > 其他分享 >js 实现计数排序

js 实现计数排序

时间:2022-09-04 21:15:31浏览次数:85  
标签:arr 索引 ++ bucket js 计数 let 数组 排序

// 计数排序
// 稳定性:稳定
// 定义一个数组,将数组中每个元素出现的次数以数组形式保存起来,数组索引值即为具体 key,数组索引对应的元素值即为该索引值出现的次数
// 再将保存起来的次数的数字依次放入原数组
function countingSort(arr, maxValue) {
    let bucket = new Array(maxValue + 1);
    let sortedIndex = 0; // 代表传入数组的索引
    let arrLength = arr.length;
    let bucketLength = maxValue + 1;
    for (let i = 0; i < arrLength; i++) {
        if (!bucket[arr[i]]) {
            bucket[arr[i]] = 0;
        }
        bucket[arr[i]]++;
    }
    for (let j = 0; j < bucketLength; j++) {
        // 只要当前索引下次数不为 0 ,则继续遍历
        while (bucket[j] > 0) {
            // 将原数组对应位置放入当前值,当前值即 j,同时将 sortedIndex++
            arr[sortedIndex++] = j;
            bucket[j]--;
        }
    }
    return arr;
}
console.log("计数排序");
console.log(countingSort([6, 3, 7, 8, 2, 4, 0, 1, 6, 5], 15));

参考链接:https://www.runoob.com/w3cnote/counting-sort.html 

标签:arr,索引,++,bucket,js,计数,let,数组,排序
From: https://www.cnblogs.com/beileixinqing/p/16656075.html

相关文章

  • 十大排序算法之【插入排序】
    插入排序的原理很简单:斗地主理牌的时候怎么操作就怎么操作。最简易版代码实现:#include<bits/stdc++.h>voidinsert_sort(vector<int>&in){for(inti=0;i<in.s......
  • JS中校验身份证号
    //1城市代码列表varaIdentityCode_City={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:......
  • JS中计算两个时间相差多少天
    functionjsGetSjzyts(rysj1,cysj2){varreturnZyts=0;if((""==rysj1)||(""==cysj2)){returnZyts=0;$('#sjzyts').prop("va......
  • JS根据id将光标定位到html的元素中
    1定位到input元素中varelement=document.getElementById(ys_id);//ys_id为传入的html元素的idelement.focus();ViewCode2 定位到div元素中window.location......
  • leetcode 83. Remove Duplicates from Sorted List 删除排序链表中的重复元素(简单)
    一、题目大意给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。示例1:输入:head=[1,1,2]输出:[1,2]示例2:输入:h......
  • js的数组操作方法大全
    js中数组的操作方法大全常见的一些数组操作push,pop,unshift,shiftpush语法array.push(item1,item2,...,itemX)push()方法:可以将一个或者更多的参数添加在数组的尾部......
  • 数据结构与算法【Java】05---排序算法总结
    前言数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码。要学习好数据结构就......
  • 使用 fetch + React.js 调用 REST API
    JSON:PlaceholderJSON:Placeholder(https://jsonplaceholder.typicode.com/)是一个用于测试的RESTAPI网站。以下使用RxJS6+React.js调用该网站的RESTAPI,......
  • 关于 JSON 引号问题
    JSON的字符串中,字符串的引号必须用单引号,内部的键值必须用双引号importjsonstr='{"a":123,"b":"456"}'str=json.loads(str)print(str)#{'a':123,'b':'4......
  • 简单计数题(P1350车的放置 dp)
     题目传送门题目大意:给定一个图,在图中放置棋子,每行每列仅能放置一个,求放置\(k\)个的方案数。题目分析:对于给定图,若对于每个点都从前到后进行放置,难免会出现重复......