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自然分类法算法实现代码
Oct 11 Javascript
js改变文章字体大小的实例代码
Nov 27 Javascript
快速解决jQuery与其他库冲突的方法介绍
Jan 02 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
May 08 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
Mar 04 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
jquery验证邮箱格式并显示提交按钮
Nov 07 Javascript
AngularJS入门教程之模块化操作用法示例
Nov 02 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
Sep 12 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
Js实现复选框的全选、全不选反选功能代码实例
Feb 28 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实现查询百度google收录情况(示例代码)
2013/08/02 PHP
PHP分页详细讲解(有实例)
2013/10/30 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php自定义错误处理用法实例
2015/03/20 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
JavaScript实现拼音排序的方法
2012/11/20 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
基于DataFrame改变列类型的方法
2018/07/25 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
简单了解Python3里的一些新特性
2019/07/13 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
文明礼仪事迹材料
2014/01/09 职场文书
团日活动总结
2014/04/28 职场文书
酒店端午节活动方案
2014/08/26 职场文书
求职自我评价范文
2015/03/09 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
Python Matplotlib绘制两个Y轴图像
2022/04/13 Python