1.算法思想
通过一次排序将要排序的数组分割成两个独立的部分,其中一部分的所有数据小于另外一部分的所有数据,然后按照此方法对两个部分的数据进行快速排序,整个过程采用递归实现,以此达到整个数组变为有序数组。
时间复杂度:平均-O(nlogn)
,最好-O(nlogn)
,最坏-O(n^2)
;空间复杂度:O(longn)
.不稳定
2.算法思路
1.从序列中选取一个基准值;
2.遍历整个序列,比基准值小的数放在左边,比基准数大的数放在右边;
3.重复1、2 直到所有的子集当中只有一个数
3.代码实现
function quickSort(arr){
if(arr.length<2){//数组特殊情况考虑
return arr;
}
var left=[];
var right=[];
//定义基准值
var mid=arr.splice(Math.floor(arr.length/2),1);
for(var i=0;i<arr.length;i++){//遍历数组
if(arr[i]<mid){//小于基准值
left.push(arr[i];
}else{
right.push(arr[i]);
}
return quickSort(left).concat(mid,quickSort(right));//采用递归,并合并数组
}