javascript数组排序汇总


Posted in Javascript onJuly 07, 2015

javascript数组排序汇总

//排序算法
  window.onload = function(){
    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,8];
    //var array = [4,2,5,1,0,3];
    console.log('原始数组');
    console.log(array);
    array = sorting.shellSort(array);
    // alert(array);
    console.log('排序后的数组')
    console.log(array);
  }
   
  var sorting = {
    //利用sort方法进行排序
    systemSort: function(arr){
      return arr.sort(function(a,b){
        return a-b;
      });
    },
   
    //冒泡排序
    bubbleSort: function(arr){
      var len=arr.length, tmp;
      for(var i=0;i<len-1;i++){
        for(var j=0;j<len-1-i;j++){
          if(arr[j]>arr[j+1]){
            tmp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = tmp;
          }
        }
      }
      return arr;
    },
   
    //快速排序
    quickSort: function(arr){
      var low=0, high=arr.length-1;
      sort(low,high);
      function sort(low, high){
        if(low<high){
          var mid = (function(low, high){
            var tmp = arr[low];
            while(low<high){
              while(low<high&&arr[high]>=tmp){
                high--;
              }
              arr[low] = arr[high];
              while(low<high&&arr[low]<=tmp){
                low++;
              }
              arr[high] = arr[low];
            }
            arr[low] = tmp;
            return low;
          })(low, high);
          sort(low, mid-1);
          sort(mid+1,high);
        }
      }
      return arr;
    },
   
    //插入排序
    insertSort: function(arr){
      var len = arr.length;
      for(var i=1;i<len;i++){
        var tmp = arr[i];
        for(var j=i-1;j>=0;j--){
          if(tmp<arr[j]){
            arr[j+1] = arr[j];
          }else{
            arr[j+1] = tmp;
            break;
          }
        }
      }
      return arr;
    },
   
    //希尔排序
    shellSort: function(arr){
      var h = 1;
      while(h<=arr.length/3){
        h = h*3+1; //O(n^(3/2))by Knuth,1973
      }
      for( ;h>=1;h=Math.floor(h/3)){
        for(var k=0;k<h;k++){
          for(var i=h+k;i<arr.length;i+=h){
            for(var j=i;j>=h&&arr[j]<arr[j-h];j-=h){
              var tmp = arr[j];
              arr[j] = arr[j-h];
              arr[j-h] = tmp;
            }
          }
        }
      }
      return arr;
    }
  }

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
YUI 读码日记之 YAHOO.lang.is*
Mar 22 Javascript
javascript学习(一)构建自己的JS库
Jan 02 Javascript
javascript获取隐藏dom的宽高 具体实现
Jul 14 Javascript
一个不错的js html页面倒计时可精确到秒
Oct 22 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
jQuery通过deferred对象管理ajax异步
May 20 Javascript
JS扩展类,克隆对象与混合类实例分析
Nov 26 Javascript
浅谈JavaScript作用域和闭包
Sep 18 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
Vue项目中使用jquery的简单方法
May 16 jQuery
用node.js写一个jenkins发版脚本
May 21 Javascript
javascript编写贪吃蛇游戏
Jul 07 #Javascript
Javascript编写2048小游戏
Jul 07 #Javascript
利用JavaScript脚本实现滚屏效果的方法
Jul 07 #Javascript
JavaScript编写连连看小游戏
Jul 07 #Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 #Javascript
JavaScript编写推箱子游戏
Jul 07 #Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 #Javascript
You might like
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
php常用的url处理函数总结
2014/11/19 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
JavaScript Split()方法
2015/12/18 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
vue.js的提示组件
2017/03/02 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
pytorch 归一化与反归一化实例
2019/12/31 Python
python绘制动态曲线教程
2020/02/24 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
区分python中的进程与线程
2020/08/13 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
汽车专业毕业生自荐信
2013/11/03 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
工程项目建议书范文
2014/03/12 职场文书
个人租房协议书
2014/04/09 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书