美文网首页
JavaScript基础算法之冒泡排序&快速排序

JavaScript基础算法之冒泡排序&快速排序

作者: 任建坤123 | 来源:发表于2019-07-15 04:02 被阅读0次

    1,冒泡排序

    原理:相邻的两个数互相比较,按照从小到大排列,进行比较时前一个数如果比后一个数大则两个数互换位置,相互比较完一轮最大的数就会到最后面,并且不再参与比较,然后再循环比较,直到比较完成。

    var arr1 = [23, 43, 4543, 45, 546546, 67, 764, 45, 22, 34, 66, 88]
    
    function pao(arr) {
      var len = arr.length;    //获取数组长度
      for (var i = 0; i < len - 1; i++) {    // 第一层循环
        for (var j = 0; j < len - 1 - i; j++) {   // 第二层循环,每确定一个数循环就减少一次,数组的长度减1再减去当前数组长度
          if (arr[j] > arr[j + 1]) {  // 相邻两数相比较 前一个数比后一个数大 两数则互换位置
            var num = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = num
          }
        }
      }
      return arr
    }
    console.log(pao(arr1)) // 输出结果[22, 23, 34, 43, 45, 45, 66, 67, 88, 764, 4543, 546546]
    

    2,快速排序

    原理:新建两个空数组分别为left和right,从数组中选出中间数,然后把数组中的每一项与中间数做比较,小的放入left数组,大的放入right数组。然后再用这样的方法比较新数组。直到比较完成,再把left和中间数和rignt连接为一个数组则排序完成。

    var arr=[2,4,6,88,78,67,65,9,12];
    
    function quicklySort(list){
      if(list.length <= 1 ){ //判断如果数组长度<=1,表示数组只有一个内容或没内容,直接返回本身
        return list;
      }
      var n = Math.floor(list.length / 2);//数组的中间数下标
      var num = list.splice(n,1)[0];//数组的中间数
      var left = [],right = []; //新建两个空数组用来接收比较后的数
      for(var i=0;i<list.length;i++){  开始循环
        if(list[i] < num){   如果要比较的数小于中间数则放入left 否则放入right
          left.push(list[i])
        }else{
          right.push(list[i])
        }
      }
      return quicklySort(left).concat([num],quicklySort(right))  把left,nun,right连接成一个数组
    }
    console.log(quicklySort(arr));//  输出结果 [2, 4, 6, 9, 12, 65, 67, 78, 88]
    

    好了,今天就暂时到这里了,想知道更多的可以点个关注,

    愚才疏学浅,故难免错漏,敬请海涵,还望不吝指出,万分感激!!!

    相关文章

      网友评论

          本文标题:JavaScript基础算法之冒泡排序&快速排序

          本文链接:https://www.haomeiwen.com/subject/naowkctx.html