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 相关文章推荐
jQuery中add实现同时选择两个id对象
Oct 22 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
Nov 20 Javascript
多个datatable共存造成多个表格的checkbox都被选中
Jul 11 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
Layui数据表格之获取表格中所有的数据方法
Aug 20 Javascript
js实现简单选项卡功能
Mar 23 Javascript
解决element UI 自定义传参的问题
Aug 22 Javascript
浅谈webpack devtool里的7种SourceMap模式
Jan 14 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 Javascript
小程序实现列表倒计时功能
Jan 29 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 在线翻译函数代码
2009/05/07 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
语义化 H1 标签
2008/01/14 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
pygame实现飞机大战
2020/03/11 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
香港礼品网站:GiftU eshop
2017/09/01 全球购物
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
new修饰符是起什么作用
2015/06/28 面试题
茶叶店创业计划书范文
2014/01/19 职场文书
师德师风承诺书
2014/05/23 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers