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 相关文章推荐
百度 popup.js 完美修正版非常的不错 脚本之家推荐
Apr 17 Javascript
用jQuery扩展自写的 UI导航
Jan 13 Javascript
jQuery提交多个表单的小例子
Jun 30 Javascript
复选框全选与全不选操作实现思路
Aug 18 Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 Javascript
jQuery简单获取键盘事件的方法
Jan 22 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 Javascript
JS+Canvas绘制时钟效果
Aug 20 Javascript
Bootstrap3 datetimepicker控件使用实例
Dec 13 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
Jun 05 Javascript
浅谈JS中几种轻松处理'this'指向方式
Sep 16 Javascript
JS图片预加载三种实现方法解析
May 08 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
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
详解微信UnionID作用
2019/05/15 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
浅谈Python中函数的参数传递
2016/06/21 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
django model object序列化实例
2020/03/13 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
天巡全球:Skyscanner Global
2017/06/20 全球购物
外包公司软件测试工程师
2014/11/01 面试题
自我评价怎么写正确呢?
2013/12/02 职场文书
企业申诉管理制度
2014/01/30 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
青奥会口号
2014/06/12 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
水浒传读书笔记
2015/06/25 职场文书
Python os和os.path模块详情
2022/04/02 Python