做面试题的时候,居然忘记了快速排序,属实惭愧,前来复习一下
快速排序用的分治思想:
1.找出基线条件,这种条件必须尽可能简单。
2.不断将问题分解(或者说缩小规模),直到符合基线条件。
快排思路:
1.选择基准值
2.将数组分成两个子数组:小于基准值的元素和大于基准值的元素。
2.对这两个子数组进行快速排序。
代码实现:
function quicksort(arr) {
if(arr.length < 2){
return arr
}else{
let pivot = arr[0];
let less = arr.slice(1).filter(function(value,index){
return value <= pivot;
})
let greater = arr.slice(1).filter(function(value,index){
return value > pivot;
})
return [...quicksort(less),pivot,...quicksort(greater)];
}
}