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 相关文章推荐
彻底搞懂JS无缝滚动代码
Jan 03 Javascript
ArrayList类(增强版)
Apr 04 Javascript
juqery 学习之三 选择器 可见性 元素属性
Nov 25 Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 Javascript
javascript页面加载完执行事件代码
Feb 11 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
Sep 30 Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 Javascript
原生js实现俄罗斯方块
Oct 20 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 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基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
PHP详细彻底学习Smarty
2008/03/27 PHP
php 异常处理实现代码
2009/03/10 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
ThinkPHP分页实例
2014/10/15 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
jQuery 操作option的实现代码
2011/03/03 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
js实现无缝轮播图
2020/03/09 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
python中精确输出JSON浮点数的方法
2014/04/18 Python
Python实现子类调用父类的方法
2014/11/10 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python3字符串学习教程
2015/08/20 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
Python3 读取Word文件方式
2020/02/13 Python
Python decimal模块使用方法详解
2020/06/08 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
教室布置标语
2014/06/26 职场文书
关于倡议书的范文
2015/04/29 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers