← 返回学科目录

快速排序分治递归过程可视化

左右指针交换法 + 递归树动态生成

数组排序过程

基准值 (Pivot)
左指针 (i)
右指针 (j)
已确定位置
未处理

递归树生长过程

当前状态

点击"下一步"开始快速排序可视化演示。首先将选取基准值(pivot),然后使用左右指针法进行分区。

算法代码

function quickSort(arr, left, right) {
if (left < right) {
let pivotIndex = partition(arr, left, right); // 分区操作
quickSort(arr, left, pivotIndex - 1); // 递归排序左子数组
quickSort(arr, pivotIndex + 1, right); // 递归排序右子数组
}
}
function partition(arr, left, right) {
let pivot = arr[right]; // 选择最右元素作为基准值
let i = left - 1; // 左指针初始化
for (let j = left; j < right; j++) {
if (arr[j] < pivot) { // 当前元素小于基准值
i++; // 左指针右移
swap(arr, i, j); // 交换元素
}
}
swap(arr, i + 1, right); // 将基准值放到正确位置
return i + 1; // 返回基准值索引
}