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 相关文章推荐
IE bug table元素的innerHTML
Jan 11 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
Apr 01 Javascript
jWiard 基于JQuery的强大的向导控件介绍
Oct 28 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
js实现延迟加载的方法
Jun 24 Javascript
jquery实现移动端点击图片查看大图特效
Sep 11 Javascript
Vue-Router2.X多种路由实现方式总结
Feb 09 Javascript
JS中this的指向以及call、apply的作用
May 06 Javascript
vue-router+nginx 非根路径配置方法
Jun 30 Javascript
vue发送ajax请求详解
Oct 09 Javascript
Element Backtop回到顶部的具体使用
Jul 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
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
深入理解NumPy简明教程---数组1
2016/12/17 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
详解python中*号的用法
2019/10/21 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
怎样填写就业意向
2014/04/02 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
交通安全标语
2014/06/06 职场文书
小学生植树节活动总结
2014/07/04 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
质量保证书格式模板
2015/02/27 职场文书
公务员处分决定书
2015/06/25 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
详解Vue router路由
2021/11/20 Vue.js