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 相关文章推荐
javaScript 读取和设置文档元素的样式属性
Apr 14 Javascript
js 内存释放问题
Apr 25 Javascript
JQuery选择器特辑 详细小结
May 14 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
Nov 01 Javascript
javascript实现修改微信分享的标题内容等
Dec 11 Javascript
javascript+css3 实现动态按钮菜单特效
Feb 06 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
关于foreach循环中遇到的问题小结
May 08 Javascript
js数字滑动时钟的简单实现(示例讲解)
Aug 14 Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 Javascript
vue中使用codemirror的实例详解
Nov 01 Javascript
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 开发环境配置(Zend Studio)
2010/04/28 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php curl的深入解析
2013/06/02 PHP
sae使用smarty模板的方法
2013/12/17 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
php实现修改新闻时删除图片的方法
2015/05/12 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
前端性能优化建议
2020/09/17 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
手把手教你python实现SVM算法
2017/12/27 Python
numpy数组广播的机制
2019/07/12 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
最新教师自我评价分享
2013/11/12 职场文书
爱情寄语大全
2014/04/09 职场文书
协议书的格式
2014/04/23 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书