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判断背景图片是否加载成功使用img的width实现
May 29 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
Jun 26 Javascript
javascript单引号和双引号的区别和处理
May 14 Javascript
node.js操作mongodb学习小结
Apr 25 Javascript
学习JavaScript设计模式之责任链模式
Jan 18 Javascript
jQuery实现背景弹性滚动的导航效果
Jun 01 Javascript
AngularJS HTML DOM详解及示例代码
Aug 17 Javascript
vuex的module模块用法示例
Nov 12 Javascript
实现高性能javascript的注意事项
May 27 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
May 15 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
Jun 12 Javascript
解决vue2中使用elementUi打包报错的问题
Sep 22 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
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python如何获取系统iops示例代码
2016/09/06 Python
python在每个字符后添加空格的实例
2018/05/07 Python
Python切片索引用法示例
2018/05/15 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
Java面试题汇总
2015/12/06 面试题
工作个人的自我评价
2014/01/14 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
主要负责人任命书
2014/06/06 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
Win11快速关闭所有广告推荐
2022/04/19 数码科技
Java 写一个简单的图书管理系统
2022/04/26 Java/Android