js快速排序
js快速排序
function quickSort (arr) {
var left = [];
var right = [];
if (arr.length <= 1) {
// 控制语句,用于结束递归
return arr;
}
var middle = arr.splice(0,1)[0];
for (var i = 0;i < arr.length ;i++){
if (arr[i] < middle){
left.push(arr[i])
}else {
right.push(arr[i])
}
}
return quickSort(left).concat(middle, quickSort(right))
}
快速排序排序的数组越乱性能越好 每次拆分后两边的内容大小不一,所以执行效率不稳定
时间复杂度:
最好的情况:每一次base值都刚好平分整个数组,O(nlogn)
最坏的情况:每一次base值都是数组中的最大/最小值,O(n2)
空间复杂度
快速排序是递归的,需要借助栈来保存每一层递归的调用信息,所以空间复杂度和递归树的深度一致
最好的情况:每一次base值都刚好平分整个数组,递归树的深度O(logn)
最坏的情况:每一次base值都是数组中的最大/最小值,递归树的深度O(n)



浙公网安备 33010602011771号