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 相关文章推荐
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
Jan 24 Javascript
JQUERY dialog的用法详细解析
Dec 19 Javascript
JavaScript面向对象编程入门教程
Apr 16 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
Jun 26 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
Jun 08 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
Bootstrap table使用方法总结
May 10 Javascript
Vue.js 中的 v-show 指令及用法详解
Nov 19 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
Vue实现多页签组件
Jan 14 Vue.js
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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
python识别验证码图片实例详解
2020/02/17 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
浅析Python __name__ 是什么
2020/07/07 Python
Python os库常用操作代码汇总
2020/11/03 Python
python中altair可视化库实例用法
2021/01/26 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
财务分析个人的自荐书范文
2013/11/24 职场文书
有趣的广告词
2014/03/18 职场文书
初中生评语大全
2014/04/24 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
离婚被告代理词
2015/05/23 职场文书
golang定时器
2022/04/14 Golang