• 各种排序算法的js实现


    1. 冒泡排序

    //冒泡排序(从小到大排列)
    function bubbleSort(arr){
      //一共比较length-1次
      for(var i=1, len=arr.length; i<len; i++){
          //从尾到头(当然也可以从头到尾)
        for(var j=len-1; j>0; j--){
            //大的排在后面
            if(arr[j] < arr[j-1]){
                  var tmp = arr[j];
    
                arr[j] = arr[j-1];
                arr[j-1] = tmp;
            }
        }
      }
    
      return arr;
    }
    
    var arr = [6,5,4,3,2,1];
    console.log(arr);
    console.log( bubbleSort(arr) );

     2. 鸡尾酒排序 (双向的冒泡排序)

    //鸡尾酒排序排序(从小到大排列)
    function cocktailSort(arr) {
        //一共比较Math.ceil(length/2)次
        for(var i = 0, len=arr.length; i < len/2; i++) {
            //将最小值排在队头
            for(var j = i; j < len-i-1; j++) {
                //大换后
                if(arr[j] > arr[j+1]) {
                    var temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
                console.log( "大换后(index="+j+"):"+arr.join(',') );
            }
    
            //将最大值排到队尾
            for(var j = len-i-1 ; j > i; j--) {
                //小换前
                if(arr[j] < arr[j-1]) {
                    var temp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = temp;
                }
                console.log( "小换前(index="+j+"):"+arr.join(',') );
            }
            console.log("第"+(i+1)+"次排序结果:"+arr.join(','));
        }
    
        return arr;
    }

    var arr = [6,5,4,3,2,1];
    console.log(arr);
    cocktailSort(arr);

     3. 快速排序

    //快速排序
    function quickSort(arr) {
      if (arr.length < 2) { 
            return arr; 
        }
    
      var firstItem = arr[0]; //取第一个数作为基准数
      var left = [];
      var right = [];
        
        //从第2个数开始,通过与基准数比较后,分成大小两类
      for (var i = 1; i < arr.length; i++){
            //小于基准数
        if (arr[i] < firstItem) {
          left.push(arr[i]);
        } else {
          right.push(arr[i]);
        }
      }
        
        console.log(left.join(',')+" ("+firstItem+") "+right.join(','));
    
      return quickSort(left).concat([firstItem], quickSort(right));
    }
    
    var arr = [6,5,4,3,2,1,10,9,8,7];
    console.log(quickSort(arr));
  • 相关阅读:
    remove &#39;^M&#39; in shell script
    MyBatis学习总结——实现关联表查询(转)
    SSM框架下结合 log4j、slf4j打印日志
    intellij IDEA里各图标对应的文件类型
    springboot整合shiro
    在Eclipse中如何关联源代码
    windows7 创建http 服务器
    Intellij IDEA 安装和配置jrebel进行项目的热部署
    IntelliJ IDEA 热部署插件 JRebel 安装激活及使用
    idea 安装热部署插件
  • 原文地址:https://www.cnblogs.com/langtao/p/3431245.html
Copyright © 2020-2023  润新知