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代码
Dec 01 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
jquery 关于event.target使用的几点说明介绍
Apr 26 Javascript
instanceof和typeof运算符的区别详解
Jan 06 Javascript
jQuery中delegate和on的用法与区别详细解析
Jan 26 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
jquery实现轮播图效果
Feb 13 Javascript
JS实现网页抢购功能(触发,终止脚本)
Nov 27 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
Dec 25 Javascript
ionic+html5+API实现双击返回键退出应用
Sep 17 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
Oct 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
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
javascript jQuery插件练习
2008/12/24 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
js实现日期级联效果
2014/01/23 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
Python常用内置函数总结
2015/02/08 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
软件测试英文面试题
2012/10/14 面试题
便利店促销方案
2014/02/20 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
北京爱情故事观后感
2015/06/12 职场文书
房贷工资证明范本
2015/06/12 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书