js的各种排序算法实现(总结)


Posted in Javascript onJuly 23, 2016

如下所示:

// ---------- 一些排序算法
var Sort = {}
Sort.prototype = {
   // 利用sort进行排序 
    systemSort:function(array){ 
     return array.sort(function(a, b){ 
       return a - b; 
     }); 
   },
   
   // 冒泡排序 
   bubbleSort:function(array){ 
     var i = 0, len = array.length, 
       j, d; 
     for(; i<len; i++){ 
       for(j=0; j<len; j++){ 
         if(array[i] < array[j]){ 
           d = array[j]; 
           array[j] = array[i]; 
           array[i] = d; 
         } 
       } 
     } 
     return array; 
   },
   
   // 快速排序 
   quickSort:function(array){ 
     //var array = [8,4,6,2,7,9,3,5,74,5]; 
     //var array =[0,1,2,44,4,324,5,65,6,6,34,4,5,6,2,43,5,6,62,43,5,1,4,51,56,76,7,7,2,1,45,4,6,7]; 
     var i = 0; 
     var j = array.length - 1; 
     var Sort = function(i, j){ 
       // 结束条件 
       if(i == j ){ return };
       var key = array[i]; 
       var tempi = i; // 记录开始位置 
       var tempj = j; // 记录结束位置 
       
       while(j > i){ 
         // j <<-------------- 向前查找 
         if(array[j] >= key){ 
           j--; 
         }else{ 
           array[i] = array[j] 
           //i++ ------------>>向后查找 
           while(j > ++i){ 
             if(array[i] > key){ 
               array[j] = array[i]; 
               break; 
             } 
           } 
         } 
       }
       // 如果第一个取出的 key 是最小的数 
       if(tempi == i){ 
         Sort(++i, tempj); 
         return ; 
       }
       // 最后一个空位留给 key 
       array[i] = key; 
       // 递归 
       Sort(tempi, i); 
       Sort(j, tempj); 
     } 
     Sort(i, j);
     return array; 
   }, 
    
   // 插入排序 
   insertSort:function(array){ 
     // http://baike.baidu.com/image/d57e99942da24e5dd21b7080 
     // http://baike.baidu.com/view/396887.htm 
     // var array = [0,1,2,44,4,324,5,65,6,6,34,4,5,6,2,43,5,6,62,43,5,1,4,51,56,76,7,7,2,1,45,4,6,7]; 
     var i = 1, j, temp, key, len = array.length;
     for(; i < len; i++){ 
       temp = j = i; 
       key = array[j]; 
       while(--j > -1){ 
         if(array[j] > key){ 
           array[j+1] = array[j]; 
         }else{
           break;
         }
       }
       array[j+1] = key; 
     }
     return array; 
   }, 
    
   // 希尔排序 
   //Jun.array.shellSort(Jun.array.df(10000)); 
   shellSort:function(array){ 
     // http://zh.wikipedia.org/zh/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F 
     // var array = [13,14,94,33,82,25,59,94,65,23,45,27,73,25,39,10];
     // var tempArr = [1750, 701, 301, 132, 57, 23, 10, 4, 1];  
     // reverse() 在维基上看到这个最优的步长 较小数组 
     var tempArr = [1031612713, 217378076, 45806244, 9651787, 2034035, 428481, 90358, 19001, 4025, 836, 182, 34, 9, 1] 
       //针对大数组的步长选择 
     var i = 0; 
     var tempArrtempArrLength = tempArr.length; 
     var len = array.length; 
     var len2 = parseInt(len/2); 
      
     for(;i < tempArrLength; i++){ 
       if(tempArr[i] > len2){ 
         continue; 
       }
       tempSort(tempArr[i]); 
     }
     // 排序一个步长 
     function tempSort(temp){ 
       //console.log(temp) 使用的步长统计 
       var i = 0, j = 0, f, tem, key; 
       var tempLen = len%temp > 0 ? parseInt(len/temp) + 1 : len/temp;  
       
       for(;i < temp; i++){// 依次循环列 
  
         for(j=1;/*j < tempLen && */temp * j + i < len; j++){
            //依次循环每列的每行 
           tem = f = temp * j + i; 
           key = array[f]; 
  
           while((tem-=temp) >= 0){ 
              // 依次向上查找
             if(array[tem] > key){
               array[tem+temp] = array[tem];
             }else{
               break;
             }
           }
           array[tem + temp ] = key;
         }
       }
     }
     return array;
   }
}

以上这篇js的各种排序算法实现(总结)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript json 新手入门文档
Dec 03 Javascript
Jquery之美中不足小结
Feb 16 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
May 23 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 Javascript
JS常用字符串处理方法应用总结
May 22 Javascript
原生js实现日期联动
Jan 12 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
Mar 02 Javascript
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
Angular4开发解决跨域问题详解
Aug 28 Javascript
解决vue打包之后静态资源图片失效的问题
Feb 21 Javascript
Javascript操作select控件代码实例
Feb 14 Javascript
javascript实现用户必须勾选协议实例讲解
Mar 24 Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 #Javascript
javaScript事件机制兼容【详细整理】
Jul 23 #Javascript
基于bootstrap实现广告轮播带图片和文字效果
Jul 22 #Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
Jul 22 #Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
Jul 22 #Javascript
JavaScript中的Reflect对象详解(ES6新特性)
Jul 22 #Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
Jul 22 #Javascript
You might like
PHP初学者头疼问题总结
2006/07/08 PHP
PHP安全配置详细说明
2011/09/26 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python中hashlib模块用法示例
2017/10/30 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
pandas按条件筛选数据的实现
2021/02/20 Python
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
我们的节日清明节活动总结
2014/04/30 职场文书
第二课堂活动总结
2014/05/07 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
英语导游欢迎词
2015/09/30 职场文书
Nginx配置根据url参数重定向
2022/04/11 Servers
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers