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 相关文章推荐
js实现翻页后保持checkbox选中状态的实现方法
Nov 03 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
Apr 28 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
javascript 分号总结及详细介绍
Sep 24 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
详解VUE的状态控制与延时加载刷新
Mar 27 Javascript
vue 中directive功能的简单实现
Jan 05 Javascript
JS实现访问DOM对象指定节点的方法示例
Apr 04 Javascript
解决angularJS中input标签的ng-change事件无效问题
Sep 13 Javascript
Node.js实现一个HTTP服务器的方法示例
May 13 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
vue项目实现减少app.js和vender.js的体积操作
Nov 12 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合并两个数组的两种方式的异同
2012/09/14 PHP
深入php内核之php in array
2015/11/10 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
python人人网登录应用实例
2014/09/26 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
Python循环结构的应用场景详解
2019/07/11 Python
Python设计密码强度校验程序
2020/07/30 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
中学教师实习自我鉴定
2013/09/28 职场文书
三好学生自我鉴定
2013/12/17 职场文书
经销商培训邀请函
2014/01/21 职场文书
幼儿园秋游感想
2014/03/12 职场文书
给全校老师的建议书
2014/03/13 职场文书
小班上学期评语
2014/05/05 职场文书
爱护草坪标语
2014/06/24 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
教师个人事迹材料
2014/12/17 职场文书
华山导游词
2015/02/03 职场文书
公司食堂管理制度
2015/08/05 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers