var arr = ['A','Q','D','W','B','G']
function quickSort(arr) {
//定义一个递归函数
const recursion = (arr, left = 0, right = arr.length - 1) => {
if (left < right) { //过程5:此时left===right,分无可分,则代表整个递归循环着结束
let i = left, j = right, pivot = arr[i];
while (i < j) { //过程4:i与j相遇则结束此次递归循环,此时i===j
//i++和j--是参与完逻辑运算后才自增,不太熟悉的同学可以去看看i++和++i的区别
while (i < j && arr[j] > pivot) j--
if (i < j) arr[i++] = arr[j] //这里用i++,被换过来的必然比x小,赋值后直接让i自加,不用再比较,可以提高效率,下同
while (i < j && arr[i] < pivot) i++
if (i < j) arr[j--] = arr[i]
}
arr[i] = pivot
recursion(arr, left, i - 1) //继续左边数组的分治
recursion(arr, i + 1, right) //继续右边数组的分治
}
}
recursion(arr)
return arr
}
console.log(quickSort(arr))
如何使用递归排序
最新推荐文章于 2023-04-24 09:24:17 发布