码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2018-08-20 15:34:36      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:math   ++   一个   floor   quick   cat   直接   log   返回   

  1. 第一种方式:

    function qSort(arr) {
      //声明并初始化左边的数组和右边的数组
    var left = [], right = []
    //使用数组最后一个元素作为基准值
    var base = arr[arr.length - 1]
    //当数组长度只有1或者为空时,直接返回数组,不需要排序
    if(arr.length <= 1) return arr
    //进行遍历
    for(var i = 0, len = arr.length; i < len - 1; i++) {
    if(arr[i] <= base) {
    //如果小于基准值,push到左边的数组
    left.push(arr[i])
    } else {
    //如果大于基准值,push到右边的数组
    right.push(arr[i])
    }
    }
    //递归并且合并数组元素
    return [...qSort(left), ...[base], ...qSort(right)]
    }
    const arr = [2, 4, 1, 5, 3, 1]
    const s = qSort(arr)
    console.log(s) // [1, 1, 2, 3, 4, 5]
  2. 第二种方式

    ar 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));//链接左数组、基准数构成的数组、右数组

    归并排序

    
    

快速排序

标签:math   ++   一个   floor   quick   cat   直接   log   返回   

原文地址:https://www.cnblogs.com/felearn/p/kuai-su-pai-xu.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!