zoukankan      html  css  js  c++  java
  • 算法之快速排序

    算法之快速排序

    解决问题:

    将一个无序的数组从小到大排列

    算法原理:

    1.先在数组中选择一个基数

    2.将除基数外的数组分为两个数组,比基数小的分为一个数组,比基数大的分为一个数组

    3.将分好的两个数组重复1,2两步,递归得到排好顺序的数组

    代码:

    var quickSort = function(arr) {
     
      if (arr.length <= 1) { return arr; }
     
      var pivotIndex = Math.floor(arr.length / 2);
     
      var pivot = arr.splice(pivotIndex, 1)[0];
     
      var left = [];
     
      var right = [];
     
      for (var i = 0; i < arr.length; i++){
     
        if (arr[i] < pivot) {
     
          left.push(arr[i]);
     
        } else {
     
          right.push(arr[i]);
     
        }
     
      }
     
      return quickSort(left).concat([pivot], quickSort(right));
     
    };
    console.log(quickSort([23,11,89,45,67,76,56,99]))

    注释:

    Math.floor()     //向下取整
    arr.splice(pivotIndex, 1)        //从数组第pivotIndex个数开始,取1个数返回
    concat()        //连接两个或多个数组


    参考:https://www.cnblogs.com/dearxinli/p/8881406.html

    钻研不易,转载请注明出处。

  • 相关阅读:
    idea设置docker远程插件
    Linux安装nfs共享文件
    类文件注释规约
    标准pcm数据(正弦波、方波、三角波)解读
    dB分贝计算
    Ion内存的带cahce与不带cache问题分享
    c++智能指针介绍_补充
    c++智能指针介绍
    wav封装格式
    开博啦。。。
  • 原文地址:https://www.cnblogs.com/s313139232/p/10400795.html
Copyright © 2011-2022 走看看