js三种排序算法分享


Posted in Javascript onAugust 16, 2012
/** 
* 值交换操作 
* arr 被操作的数组 
* i 被操作元素索引值 
* j 被操作两元素的距离 
*/ 
function refer(arr, i, j){ 
var change = (arr[i] - arr[i - j]) < 0 ? true : false, value; 
if (change) { 
value = arr[i]; 
arr[i] = arr[i - j]; 
arr[i - j] = value; 
return arguments.callee(arr, i - j, j); 
} 
else { 
return arr; 
} 
} 
//插入排序 
function insert(array){ 
for (var i = 1, len = array.length; i < len; i++) { 
if (array[i] < array[i - 1]) { 
refer(array, i, 1); 
} 
} 
return array; 
}

上面的部分是插入排序,然后是希尔排序:
//希尔排序 
function shell(array){ 
var length = array.length, value; 
for (var i = Math.floor(length / 2); i > 0; i = Math.floor(i / 2)) { 
for (var j = i; j < length; j++) { 
if (array[j] < array[j - i]) { 
refer(array, j, i); 
} 
else { 
continue; 
} 
} 
} 
return array; 
}

两种方法当中用到的refer方法为同一个方法。最后是归并排序:
//归并排序 
function order(arr1, arr2){ 
var arrLong = arr1.length > arr2.length ? arr1 : arr2; 
var arrShort = arr1.length <= arr2.length ? arr1 : arr2 
var arr = []; 
for (var i = 0, l = arrShort.length; i < l; i++) { 
for (var j = 0, len = arrLong.length; j < len; j++) { 
if (arrShort[i] < arrLong[j]) { 
arr.push(arrShort[i]); 
if (i == l - 1) { 
for (var m = 0, n = arrLong.length; m < n; m++) { 

arr[arr.length] = arrLong[m]; 


 } 



} 



break; 


} 
else { 
arr.push(arrLong[j]); 
arrLong.shift(); 
continue; 
} 
} 
} 
return arr; 
}

有好建议的同学可以留言!在此不多余赘述了,一切看代码吧。
Javascript 相关文章推荐
Using the TextRange Object
Oct 14 Javascript
根据分辩率调用不同的CSS.
Jan 08 Javascript
javascript学习笔记(十四) window对象使用介绍
Jun 20 Javascript
AngularJS实现全选反选功能
Dec 08 Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 Javascript
Angular2数据绑定详解
Apr 18 Javascript
JavaScript实现简单生成随机颜色的方法
Sep 21 Javascript
原生js实现公告滚动效果
Jan 10 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 Javascript
JS如何使用剪贴板操作Clipboard API
May 17 Javascript
vue实现Toast组件轻提示
Apr 10 Vue.js
jQuery点击后一组图片左右滑动的实现代码
Aug 16 #Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
Aug 14 #Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 #Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
Aug 14 #Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 #Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
Aug 14 #Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
Aug 14 #Javascript
You might like
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
python数据结构之图的实现方法
2015/07/08 Python
python针对excel的操作技巧
2018/03/13 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
利用python爬取有道词典的方法
2020/12/08 Python
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
企业贷款委托书格式
2014/09/12 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
优秀团员自我评价
2015/03/10 职场文书
检讨书格式
2015/05/07 职场文书
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python