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 pagination插件实现无刷新分页代码
Oct 13 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 Javascript
JavaScript中“+”的陷阱深刻理解
Dec 04 Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 Javascript
详解JavaScript表单验证(E-mail 验证)
Mar 31 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
Nov 16 Javascript
Webpack实现按需打包Lodash的几种方法详解
May 08 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
Jul 31 Javascript
AngularJS 教程及实例代码
Oct 23 Javascript
面包屑导航详解
Dec 07 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 Javascript
Vue3中的Refs和Ref详情
Nov 11 Vue.js
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/03/24 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
Python装饰器模式定义与用法分析
2018/08/06 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
python自动化之Ansible的安装教程
2019/06/13 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
水果连锁超市创业计划书
2014/01/24 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
群众路线剖析材料
2014/09/30 职场文书
2014年体育工作总结
2014/11/24 职场文书
结婚保证书
2015/01/16 职场文书
护理专业自我评价
2015/03/11 职场文书
医院病假条怎么写
2015/08/17 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
简述Java中throw-throws异常抛出
2021/08/07 Java/Android
Python集合的基础操作
2021/11/01 Python
MySQL多表查询机制
2022/03/17 MySQL
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js