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 相关文章推荐
基于jquery的跟随屏幕滚动代码
Jul 24 Javascript
node.js中的path.normalize方法使用说明
Dec 08 Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
May 24 Javascript
漂亮! js实现颜色渐变效果
Aug 12 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
详解Angular.js中$http拦截器的介绍及使用
Jul 04 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
Jul 07 Javascript
详解基于Node.js的HTTP/2 Server实践
May 31 Javascript
JS实现的tab切换并显示相应内容模块功能示例
Aug 03 Javascript
vue登录注册实例详解
Sep 14 Javascript
Three.js实现雪糕地球的使用示例详解
Jul 07 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
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
php三元运算符知识汇总
2015/07/02 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
菜鸟javascript基础资料整理2
2010/12/06 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
Python实现partial改变方法默认参数
2014/08/18 Python
Python实现配置文件备份的方法
2015/07/30 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
Python笔记之观察者模式
2019/11/20 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
介绍一下linux文件系统分配策略
2013/02/25 面试题
党的作风建设心得体会
2014/10/22 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
六年级学生评语大全
2014/12/26 职场文书
个人优缺点总结
2015/02/28 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
敬老院活动感想
2015/08/07 职场文书
《刷子李》教学反思
2016/02/20 职场文书
Python实现对齐打印 format函数的用法
2022/04/28 Python