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 QueryString解析类代码
Jan 17 Javascript
用js小类库获取浏览器的高度和宽度信息
Jan 15 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
jQuery实现的自定义弹出层效果实例详解
Sep 04 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
Sep 13 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
史上最全JavaScript常用的简写技巧(推荐)
Aug 17 Javascript
JS实现留言板功能[楼层效果展示]
Dec 27 Javascript
React事件处理的机制及原理
Dec 03 Javascript
JS实现贪吃蛇游戏
Nov 15 Javascript
vue2.0 解决抽取公用js的问题
Jul 31 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
Vue props 单向数据流的实现
2018/11/06 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
python正则实现提取电话功能
2018/02/24 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
Python读写docx文件的方法
2018/05/08 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
python代码 输入数字使其反向输出的方法
2018/12/22 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
python 如何实现遗传算法
2020/09/22 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
简历中个人求职的自我评价模板
2013/11/29 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python