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 相关文章推荐
Javascript 按位取反运算符 (~)
Feb 04 Javascript
js实现用户注册协议倒计时的方法
Jan 21 Javascript
Vue.js常用指令汇总(v-if、v-for等)
Nov 03 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
jQuery序列化表单成对象的简单实现
Nov 29 Javascript
Vue2 使用 Echarts 创建图表实例代码
May 18 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
微信小程序删除处理详解
Aug 16 Javascript
微信小程序 页面滑动事件的实例详解
Oct 12 Javascript
深入理解ES6之数据解构的用法
Jan 13 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
原生js实现点击轮播切换图片
Feb 11 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
学习使用curl采集curl使用方法
2012/01/11 PHP
三种php连接access数据库方法
2013/11/11 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
python日志模块logbook使用方法
2019/09/19 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
如何使用PHP session
2015/04/21 面试题
链表面试题-一个链表的结点结构
2015/05/04 面试题
应届生求职信范文
2014/06/30 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
分享几种python 变量合并方法
2022/03/20 Python