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 相关文章推荐
HTML代码中标签的全部属性 中文注释说明
Mar 26 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
纯js实现遮罩层效果原理分析
May 27 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
Css3制作变形与动画效果
Jul 24 Javascript
详解javascript实现瀑布流绝对式布局
Jan 29 Javascript
BootStrap的两种模态框方式
May 10 Javascript
vue生成随机验证码的示例代码
Sep 29 Javascript
JS监听滚动和id自动定位滚动
Dec 18 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
Jun 26 Javascript
JS合并两个数组的3种方法详解
Oct 24 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
php入门教程 精简版
2009/12/13 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
html超链接打开窗口大小的方法
2013/03/05 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
abstract是什么意思
2012/02/12 面试题
运动会广播稿500字
2014/01/28 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
个人工作表现自我评价
2015/03/06 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers