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 相关文章推荐
myeclipse安装jQuery插件的方法
Mar 29 Javascript
jquery设置控件位置的方法
Aug 21 Javascript
浅析Cookie中的Path与domain
Dec 18 Javascript
Javascript json object 与string 相互转换的简单实现
Sep 27 Javascript
javaScript基础详解
Jan 19 Javascript
bootstrap中添加额外的图标实例代码
Feb 15 Javascript
使用JavaScript根据图片获取条形码的方法
Jul 04 Javascript
浅谈mvvm-simple双向绑定简单实现
Apr 18 Javascript
vue项目动态设置页面title及是否缓存页面的问题
Nov 08 Javascript
layui 动态设置checbox 选中状态的例子
Sep 02 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
使用JS实现简易计算器
Jun 14 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实现通过cookie换肤的方法
2015/07/13 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
税务专业毕业生自荐信
2013/11/10 职场文书
影视制作岗位职责
2013/12/04 职场文书
留学推荐信写作指南
2014/01/25 职场文书
商业活动邀请函
2014/02/04 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
活动总结模板
2014/05/09 职场文书
python基础之停用词过滤详解
2021/04/21 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
dubbo服务整合zipkin详解
2021/07/26 Java/Android
MySQL 数据库范式化设计理论
2022/04/22 MySQL