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 相关文章推荐
Extjs Gird 支持中文拼音排序实现代码
Apr 15 Javascript
js弹窗返回值详解(window.open方式)
Jan 11 Javascript
JS简单操作select和dropdownlist实例
Nov 26 Javascript
JS实现转动随机数抽奖特效代码
Apr 16 Javascript
jquery点击切换背景色的简单实例
Aug 25 Javascript
jQuery中show与hide方法用法示例
Sep 16 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
angular4自定义组件详解
Sep 28 Javascript
vue2.0在table中实现全选和反选的示例代码
Nov 04 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
vue离开当前页面触发的函数代码
Sep 01 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实现的漂亮分页方法
2014/04/17 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
js单例模式详解实例
2013/11/21 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
护理学毕业生求职信
2013/11/14 职场文书
安全大检查反思材料
2014/01/31 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
工作求职信
2014/07/04 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
市场营销工作计划书
2014/09/15 职场文书
银行授权委托书范本
2014/10/04 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
Vue.Draggable实现交换位置
2022/04/07 Vue.js