js 计数排序的实现示例(升级版)


Posted in Javascript onJanuary 12, 2020

原版计数排序,桶的容积需要一个可以包含最小值到最大值所有可能出现的数字。这里我们可以将桶换成对象,利用对象的自动排序与不能出现相同属性名的键值对这两个特点,不需要一个有序容积的桶,随意新增键值对即可。代码如下

var ary=[23,14,12,24,53,31,53,35,46,12,62,23]

function countSort(arr){
  let obj={};
  //遍历原数组,给对象新增键值对,如果已经存在就对应的属性值++,如果不存在则新增键值对
  for(let i=0;i<arr.length;i++){
    if(!obj[arr[i]]){
      obj[arr[i]]=1;
    }else{
      obj[arr[i]]++;
    } 
    }
  let index=0;
  //遍历对象属性名,按顺序放回覆盖原数组
  for(let key in obj){
    while(obj[key]>0){
      arr[index]=Number(key);
      obj[key]--;
      index++
    }
  }
  return arr;
}

console.log(countSort(ary));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 创建对象
Jul 17 Javascript
event对象获取方法总结在google浏览器下测试
Nov 03 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
window.onload追加函数使用示例
Mar 03 Javascript
jQuery简易图片放大特效示例代码
Jun 09 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
Aug 24 Javascript
jQuery复制表单元素附源码分享效果演示
Sep 30 Javascript
js获取鼠标位置实例详解
Dec 09 Javascript
React教程之封装一个Portal可复用组件的方法
Jan 02 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
Aug 28 Javascript
vue实现井字棋游戏
Sep 29 Javascript
微信小程序 根据不同用户切换不同TabBar
Apr 21 Javascript
JS实现动态无缝轮播
Jan 11 #Javascript
原生js实现无缝轮播图
Jan 11 #Javascript
JS实现轮播图效果
Jan 11 #Javascript
js实现带搜索功能的下拉框
Jan 11 #Javascript
js实现select下拉框选择
Jan 11 #Javascript
js实现二级联动简单实例
Jan 11 #Javascript
jQuery实现轮播图效果demo
Jan 11 #jQuery
You might like
杏林同学录(八)
2006/10/09 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
nginx 设置多个站跨域
2021/03/09 Servers
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
使用graphics.py实现2048小游戏
2015/03/10 Python
python根据日期返回星期几的方法
2015/07/06 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
Pandas分组与排序的实现
2019/07/23 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
新员工考核评语
2014/12/31 职场文书
五一劳动节活动总结
2015/02/09 职场文书
行政诉讼答辩状
2015/05/21 职场文书
学校教代会开幕词
2016/03/04 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
4种方法python批量修改替换列表中元素
2022/04/07 Python
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技