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 相关文章推荐
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 Javascript
js移除事件 js绑定事件实例应用
Nov 28 Javascript
JQuery操作tr和td内容的方法实例
Mar 06 Javascript
javascript事件函数中获得事件源的两种不错方法
Mar 17 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
Dec 27 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
Angular中ng-options下拉数据默认值的设定方法
Jun 21 Javascript
新手简单了解vue
May 29 Javascript
Vue项目实现换肤功能的一种方案分析
Aug 28 Javascript
Vue的编码技巧与规范使用详解
Aug 28 Javascript
JavaScript实现省市联动效果
Nov 22 Javascript
Element Card 卡片的具体使用
Jul 26 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中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
python实现k-means聚类算法
2018/02/23 Python
Django 内置权限扩展案例详解
2019/03/04 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python可视化text()函数使用详解
2020/02/11 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
就业自我评价
2014/02/04 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
活动总结的格式
2014/05/07 职场文书
劳资员岗位职责
2015/02/13 职场文书
书法社团活动总结
2015/05/07 职场文书
班主任开场白
2015/06/01 职场文书