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 相关文章推荐
关于js注册事件的常用方法
Apr 03 Javascript
JS中如何设置readOnly的值
Dec 25 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
Sep 30 Javascript
深入剖析JavaScript:Object类型
May 10 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
浅谈原生JS中的延迟脚本和异步脚本
Jul 12 Javascript
three.js搭建室内场景教程
Dec 30 Javascript
基于vue写一个全局Message组件的实现
Aug 15 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
Jul 24 Javascript
浅谈vue 组件中的setInterval方法和window的不同
Jul 30 Javascript
vue递归实现树形组件
Jul 15 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处理json时中文问题的解决方法
2011/04/12 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python中解析json格式文件的方法示例
2017/05/03 Python
python中set()函数简介及实例解析
2018/01/09 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
2014城乡环境综合治理工作总结
2014/12/19 职场文书
预备党员考察意见范文
2015/06/01 职场文书
校园安全教育心得体会
2016/01/15 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书