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 相关文章推荐
在js中使用&quot;with&quot;语句中跨frame的变量引用问题
Mar 08 Javascript
jquery关于图形报表的运用实现代码
Jan 06 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
May 28 Javascript
JS 操作符整理[推荐收藏]
Nov 15 Javascript
js实现固定显示区域内自动缩放图片的方法
Jul 18 Javascript
jquery对所有input type=text的控件赋值实现方法
Dec 02 Javascript
JS中Swiper的使用和轮播图效果
Aug 11 Javascript
vue 设置proxyTable参数进行代理跨域
Apr 09 Javascript
关于Vue在ie10下空白页的debug小结
May 02 Javascript
微信小程序学习笔记之本地数据缓存功能详解
Mar 29 Javascript
Vuex的actions属性的具体使用
Apr 14 Javascript
SSM VUE Axios详解
Oct 05 Vue.js
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
神族 PROTOSS 概述
2020/03/14 星际争霸
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
基于php split()函数的用法详解
2013/06/05 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
基于vue--key值的特殊用处详解
2020/07/31 Javascript
python中redis的安装和使用
2016/12/04 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
python3.4实现邮件发送功能
2018/05/28 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python字典改变value值方法总结
2019/06/21 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
苹果音乐订阅:Apple Music
2018/08/02 全球购物
法律工作求职自荐信
2013/10/31 职场文书
中学生差生评语
2014/01/30 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
2015教师节通讯稿
2015/07/20 职场文书
小学同学聚会感言
2015/07/30 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技