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 相关文章推荐
移动设备web开发首选框架:zeptojs介绍
Jan 29 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
May 18 Javascript
浅谈JavaScript的函数及作用域
Dec 30 Javascript
js仿京东轮播效果 选项卡套选项卡使用
Jan 12 Javascript
php 解压zip压缩包内容到指定目录的实例
Jan 23 Javascript
使用Angular CLI生成路由的方法
Mar 24 Javascript
vue this.reload 方法 配置
Sep 12 Javascript
vue3为什么要用proxy替代defineProperty
Oct 19 Javascript
Javascript 模拟mvc实现点餐程序案例详解
Dec 24 Javascript
js实现自动锁屏功能
Jun 02 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
又一个PHP实现的冒泡排序算法分享
2014/08/21 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php中curl使用指南
2015/02/05 PHP
php实现简单的上传进度条
2015/11/17 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Scrapy的简单使用教程
2017/10/24 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
详解Python打包分发工具setuptools
2019/08/05 Python
python日志模块logbook使用方法
2019/09/19 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
Python实现手绘图效果实例分享
2020/07/22 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
毕业生个人求职信范例分享
2013/12/17 职场文书
总经理助理工作职责
2014/02/06 职场文书
抽奖活动主持词
2014/03/31 职场文书
2014年检验科工作总结
2014/11/22 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
初中思想品德教学反思
2016/02/24 职场文书
Docker下安装Oracle19c
2022/04/13 Servers