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 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
jQuery 关于伪类选择符的使用说明
Apr 24 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
Mvc提交表单的四种方法全程详解
Aug 10 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
Jul 11 Javascript
vue开发调试神器vue-devtools使用详解
Jul 13 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
vue 插值 v-once,v-text, v-html详解
Jan 19 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 Javascript
layerUI下的绑定事件实例代码
Aug 17 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
Sep 06 Javascript
vue监听用户输入和点击功能
Sep 27 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
thinkPHP查询方式小结
2016/01/09 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
利用aardio给python编写图形界面
2017/08/21 Python
Python分支结构(switch)操作简介
2018/01/17 Python
Python unittest单元测试框架总结
2018/09/08 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
历史专业个人求职信范文
2013/12/07 职场文书
七年级政治教学反思
2014/02/03 职场文书
工作评语大全
2014/04/26 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
小学优秀班主任材料
2014/12/17 职场文书
个人政治思想总结
2015/03/05 职场文书
光荣之路观后感
2015/06/12 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS