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工具_Form 封装
Aug 21 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
Feb 27 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
Mar 13 Javascript
html5 canvas js(数字时钟)实例代码
Dec 23 Javascript
js实现交换运动效果的方法
Apr 10 Javascript
js获取数组的最后一个元素
Apr 14 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
May 31 Javascript
JS结合bootstrap实现基本的增删改查功能
Jul 22 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
vue cli2.0单页面title修改方法
Jun 07 Javascript
vue实现百度搜索功能
Dec 28 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
php垃圾代码优化操作代码
2010/08/05 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
新手入门常用代码集锦
2007/01/11 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
django 外键创建注意事项说明
2020/05/20 Python
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
若干个Java基础面试题
2015/05/19 面试题
函授自我鉴定范文
2014/02/06 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
承诺书的格式范文
2014/03/28 职场文书
路政管理求职信
2014/06/18 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
预备党员群众意见
2015/06/01 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python