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 相关文章推荐
JQuery设置文本框和密码框得到焦点时的样式
Aug 30 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
JavaScript实现大数的运算
Nov 24 Javascript
javascript实现博客园页面右下角返回顶部按钮
Feb 22 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
Angularjs 滚动加载更多数据
Mar 17 Javascript
基于JS代码实现图片在页面中旋转效果
Jun 16 Javascript
原生js实现键盘控制div移动且解决停顿问题
Dec 05 Javascript
vue-cli脚手架的安装教程图解
Sep 02 Javascript
详解JavaScript事件循环机制
Sep 07 Javascript
Node.js assert断言原理与用法分析
Jan 04 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
Feb 26 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数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
python实现网页链接提取的方法分享
2014/02/25 Python
python获取网页状态码示例
2014/03/30 Python
Python程序设计入门(1)基本语法简介
2014/06/13 Python
Python BS4库的安装与使用详解
2018/08/08 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
Python项目跨域问题解决方案
2020/06/22 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
学生自我鉴定模板
2013/12/30 职场文书
安全生产承诺书
2014/03/26 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
群众路线表态发言材料
2014/10/17 职场文书
2014年城管工作总结
2014/11/20 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书