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 日期转换成中文格式的函数
Jul 07 Javascript
从父页面读取和操作iframe中内容方法
Jul 25 Javascript
js关闭模态窗口刷新父页面或跳转页面
Dec 13 Javascript
JavaScript 盒模型 尺寸深入理解
Dec 31 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
May 16 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
JS中使用正则表达式g模式和非g模式的区别
Apr 01 Javascript
基于D3.js实现时钟效果
Jul 17 Javascript
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
VUE前后端学习tab写法实例
Aug 06 Javascript
layui异步加载table表中某一列数据的例子
Sep 16 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 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 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
yii操作cookie实例简介
2014/07/09 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
Django重设Admin密码过程解析
2020/02/10 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
error和exception有什么区别
2012/10/02 面试题
经理秘书找工作求职信
2013/12/19 职场文书
便利店投资创业计划书
2014/02/08 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
销售人才自我评价范文
2014/09/27 职场文书
合伙购房协议样本
2014/10/06 职场文书
廉洁自律证明
2015/06/24 职场文书
Python 如何安装Selenium
2021/05/06 Python