zoukankan      html  css  js  c++  java
  • 【前端算法2】快速排序

    /** 快速排序
     *  快速排序是对冒泡排序的一种改进,
     *  第一趟排序时将数据分成两部分,一部分比另一部分的所有数据都要小。
     *  然后递归调用,在两边都实行快速排序。
     * **/
    
    function quickSort(arr) {
      if (arr.length <= 1) {
        return arr;
      }
      let midIndex = Math.floor(arr.length/2);
      const midValue = arr.splice(midIndex,1)[0];
      let left = [];
      let  right = [];
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] < midValue) {
          left.push(arr[i]);
        } else {
          right.push(arr[i]);
        }
      }
    
      // return [7, 6].concat([8], [10, 9]);
      // return left.concat([midValue], right);
      // 递归调用 在左右两边都执行快速排序
      return quickSort(left).concat([midValue], quickSort(right));
    }
    
    let arr = [1, 4, 2, 1, 5, 2, 8, 6, 9, 7];
    let result = quickSort(arr);
    console.log(result);
  • 相关阅读:
    iOS的文字自适应
    指向指针的指针
    NSString的创建
    Foundation-常用结构体
    Foundation summary
    成员变量补充
    Block^
    Protocol
    Category-分类
    李明杰要在广州开课啦
  • 原文地址:https://www.cnblogs.com/mailyuan/p/12217822.html
Copyright © 2011-2022 走看看