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 自定义函数写法分享
Mar 30 Javascript
jQuery使用技巧简单汇总
Apr 18 Javascript
浅谈javascript中call()、apply()、bind()的用法
Apr 20 Javascript
JS/Jquery判断对象为空的方法
Jun 11 Javascript
JavaScript处理解析JSON数据过程详解
Sep 11 Javascript
详解javascript函数的参数
Nov 10 Javascript
JavaScript仿商城实现图片广告轮播实例代码
Feb 06 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
Jun 01 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
ES6新特性一: let和const命令详解
Apr 20 Javascript
Angular6项目打包优化的实现方法
Dec 15 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php时区转换转换函数
2014/01/07 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
javascript 面向对象编程基础:封装
2009/08/21 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
Python饼状图的绘制实例
2019/01/15 Python
python实现定时发送qq消息
2019/01/18 Python
python实现的自动发送消息功能详解
2019/08/15 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
时尚圣经:The Fashion Bible
2019/03/03 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
上学迟到的检讨书
2014/01/11 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
大课间体育活动方案
2014/03/12 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
看雷锋电影观后感
2015/06/10 职场文书
Python实现滑雪小游戏
2021/09/25 Python
python3 字符串str和bytes相互转换
2022/03/23 Python