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

快速排序

时间:2019-03-14 15:20:10      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:一个   循环   ++   alt   ima   数据   .com   i++   mamicode   

 

一、快速排序法概念

  我们将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边。比较完毕后再次取中间值,再次比较一次类推
 
二、思路
 
  1、取的中间值,以及中间值的下标
 
  2、创建一个left空数组,存放小于中间值的数据
 
  3、创建一个right空数组,存放大于中间值的数据
 
  4、递归的终止条件,如果数组的长度等于1的时候就返回数组
 
  5、循环将数组一分为二
 
  6、递归
技术图片

 

 
三、代码
技术图片
function quicksort(arr){
    if(arr.length<2){
        return arr;
    }

    var midIndex = arr.length%2 == 0? arr.length/2 : (arr.length+1)/2;
    var mid = arr[midIndex];

    var left  = [];
    var right = [];
    
    for(var i=0;i<arr.length;i++){
        if(i != midIndex && arr[i] <= mid){
            left.push(arr[i]);
        }

        if(i != midIndex && arr[i] > mid){
            right.push(arr[i])
        }
    }

    return quicksort(left).concat(mid).concat(quicksort(right))
}

快速排序

标签:一个   循环   ++   alt   ima   数据   .com   i++   mamicode   

原文地址:https://www.cnblogs.com/wangqi2019/p/10530210.html

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