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 相关文章推荐
jQuery 核心函数以及jQuery对象
Mar 23 Javascript
js 小数取整的函数
May 10 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
Feb 22 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
Apr 16 Javascript
在JavaScript中使用对数Math.log()方法的教程
Jun 15 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
Apr 17 Javascript
获取input标签的所有属性的方法
Jun 28 Javascript
详解javascript立即执行函数表达式IIFE
Feb 13 Javascript
Angular.js实现动态加载组件详解
May 28 Javascript
JS判断数组那点事
Oct 10 Javascript
Vue项目配置跨域访问和代理proxy设置方式
Sep 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中的错误处理、异常处理机制分析
2012/05/07 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
python中实现php的var_dump函数功能
2015/01/21 Python
详解Python的Django框架中的中间件
2015/07/24 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
python读取文本中的坐标方法
2018/10/14 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
大二法英学生职业生涯规划范文
2014/02/27 职场文书
安全生产承诺书
2014/03/26 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
安全先进个人材料
2014/12/29 职场文书
公司市场部岗位职责
2015/04/15 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书