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实现当按下回车键时绑定点击事件
Jan 28 Javascript
用Jquery选择器计算table中的某一列某一行的合计
Aug 13 Javascript
jquery实现鼠标滑过显示提示框的方法
Feb 05 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
Mar 30 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
js实现简单的手风琴效果
Feb 27 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
Apr 27 Javascript
基于原生js运动方式关键点的总结(推荐)
Oct 01 Javascript
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
Vue.js中的组件系统
May 30 Javascript
使用异步controller与jQuery实现卷帘式分页
Jun 18 jQuery
layui 上传图片 返回图片地址的方法
Sep 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 getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Python 控制终端输出文字的实例
2019/07/12 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
Python如何实现远程方法调用
2020/08/07 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
python 对xml解析的示例
2021/02/27 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
详细的大学生创业计划书模板
2014/01/27 职场文书
一岗双责责任书
2014/04/15 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
停车位租赁协议书
2014/09/24 职场文书
教师自我剖析材料
2014/09/29 职场文书
警示教育片观后感
2015/06/17 职场文书