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 相关文章推荐
始终在屏幕中间显示Div的代码(css+js)
Mar 10 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
Nov 20 Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
javascript引用赋值(地址传值)用法实例
Jan 13 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
Aug 05 Javascript
JavaScript创建对象_动力节点Java学院整理
Jun 27 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
Jul 24 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
Aug 03 Javascript
Vue使用axios出现options请求方法
May 30 Javascript
JS实现简易留言板特效
Dec 23 Javascript
bootstrap实现tab选项卡切换
Aug 09 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提取中文首字母
2008/04/09 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
python开发之thread线程基础实例入门
2015/11/11 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
python集合常见运算案例解析
2019/10/17 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
注塑工厂厂长岗位职责
2013/12/02 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
通用员工手册范本
2015/05/14 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android