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 应用类库代码
Jun 02 Javascript
JS 进度条效果实现代码整理
May 21 Javascript
js对象关系图 方便dom操作
Mar 18 Javascript
jquery 多行文本框(textarea)高度变化
Jul 03 Javascript
Js+Jq获取URL参数的集中方法示例代码
May 20 Javascript
Js+php实现异步拖拽上传文件
Jun 23 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
Apr 11 Javascript
浅谈JS原生Ajax,GET和POST
Jun 08 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
小程序实现页面顶部选项卡效果
Nov 06 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
微信小程序的线程架构【推荐】
May 14 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中Session的概念
2006/10/09 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
Python通过正则表达式选取callback的方法
2015/07/18 Python
python实现Decorator模式实例代码
2018/02/09 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
Django视图类型总结
2021/02/17 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
医学院学生的自我评价分享
2013/11/19 职场文书
詹天佑教学反思
2014/04/30 职场文书
先进基层党组织材料
2014/12/25 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL