JavaScript 快速排序算法实现与递归原理详解
本文详细解析 JavaScript 中快速排序的实现代码,重点讲解基准点选取、数组分割及递归调用的核心逻辑。通过实例演示 arr.splice 的使用与递归终止条件,帮助开发者理解快速排序的执行流程及注意事项。
JavaScript 快速排序代码实现
核心代码展示如下:
具体实现代码如下:
function quickSort(arr){
// 若数组仅含单个元素,则直接返回该数组;
if(arr.length<1){
return arr;
}
// 计算中间元素的索引;若结果为浮点数,则向下取整。
var centerIndex = Math.floor(arr.length/2);
// 获取该中间索引对应的元素值;
var centerNum = arr.splice(centerIndex,1);
// 用于存储小于基准值的元素;
var arrLeft = [];
// 用于存储大于基准值的元素;
var arrRight = [];
for(i=0;i<arr.length;i++){
if(arr[i]<centerNum){
arrLeft.push(arr[i])
}else if(arr[i]>centerNum){
arrRight.push(arr[i])
}
}
return quickSort(arrLeft).concat(centerNum,quickSort(arrRight));
};
var arrSort = [33,18,2,40,16,63,27];
var arr1 = quickSort(arrSort);
console.log(arr1);快速排序原理与递归要点
快速排序的核心原理包含三个步骤:确定基准点、建立两个数组分别存储分割后的元素、以及进行递归调用。
基准点:即选取数组中间的一个数值作为比较标准;
建立两个数组分别存储:以该基准点为界,将小于和大于该值的元素分别存入两个新定义的数组中;
递归:在函数内部调用函数自身;
在此总结使用递归时的关键点:
1. 必须包含判断条件并返回一个值,否则会导致死循环;
2. 在内部调用自身时,传递的参数应是内部定义的某个变量,且该变量与初始传入的参数存在关联;
3. 若需执行相同的工作逻辑,可考虑采用递归方式;
递归执行过程详解
首次执行函数时的变量状态:中间数为40;根据循环中的判断条件,小于40的元素存入arrLeft,大于40的元素存入arrRight。如下图所示

第二次调用函数
当执行到 return quickSort(arrLeft).concat(centerNum,quickSort(arrRight));
quickSort(arrLeft) 会再次调用函数,传入的参数为[33,18,2,16,27]
此时中间数为2,比2小的元素放左边arrLeft,比2大的元素放右边arrRight

随后再去调用quickSort(arrRight)
后续过程类似,循环调用自身,直到传入参数的长度小于1,即返回该传入的参数。
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
