Javascript排序算法之计数排序的实例


Posted in Javascript onApril 05, 2014

计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组Count_arr,其中第i个元素是待排序数组Arr中值等于i的元素的个数。然后根据数组Count_arr来将Arr中的元素排到正确的位置。
分为四个步骤:
1.找出待排序的数组中最大和最小的元素
2.统计数组中每个值为i的元素出现的次数,存入数组Count_arr的第i项
3.对所有的计数累加(从Count_arr中的第一个元素开始,每一项和前一项相加)
4.反向遍历原数组:将每个元素i放在新数组的第Count_arr(i)项,每放一个元素就将Count_arr(i)减去1

实例:

/**
 * 计数排序是一个非基于比较的排序算法,
 * 该算法于1954年由 Harold H. Seward 提出。
 * 它的优势在于在对一定范围内的整数排序时,
 * 它的复杂度为Ο(n+k)(其中k是整数的范围),
 * 快于任何比较排序算法。
 *
 */function countSort(arr, min, max) {
    var i, z = 0, count = [];
    for (i = min; i <= max; i++) {
        count[i] = 0;
    }
    for (i=0; i < arr.length; i++) {
        count[arr[i]]++;
    }
    for (i = min; i <= max; i++) {
        while (count[i]-- > 0) {
            arr[z++] = i;
        }
    }
    return arr;
}
// test
var i, arr = [];
for (i = 0; i < 100; i++) {
    arr.push(Math.floor(Math.random() * (141)));
}
countSort(arr, 0, 140);
Javascript 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
createElement动态创建HTML对象脚本代码
Nov 24 Javascript
初识JQuery 实例一(first)
Mar 16 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 Javascript
详解jQuery中的empty、remove和detach
Apr 11 Javascript
浅谈angularJS中的事件
Jul 12 Javascript
JS HTML图片显示Canvas 压缩功能
Jul 21 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
vue项目中使用Svg的方法
Oct 24 Javascript
Vue.js实现立体计算器
Feb 22 Javascript
JavaScript实现下拉列表
Jan 20 Javascript
JavaScript中的正则表达式简明总结
Apr 04 #Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
Apr 04 #Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
Apr 04 #Javascript
JQuery记住用户名和密码的具体实现
Apr 04 #Javascript
JS根据变量保存方法名并执行方法示例
Apr 04 #Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 #Javascript
JavaScript排序算法之希尔排序的2个实例
Apr 04 #Javascript
You might like
社区(php&amp;&amp;mysql)二
2006/10/09 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
js停止输出代码
2008/07/20 Javascript
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
Python 详解基本语法_函数_返回值
2017/01/22 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
党校培训思想汇报
2014/01/03 职场文书
给领导的致歉信范文
2014/01/13 职场文书
客房领班岗位职责
2015/02/11 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
小学语文国培研修日志
2015/11/13 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
python之json文件转xml文件案例讲解
2021/08/07 Python
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
讲解MySQL增删改操作
2022/05/06 MySQL
SQL Server中的游标介绍
2022/05/20 SQL Server