本文详解 JavaScript 中快速排序的实现原理与代码。通过选取基准点、左右分区及递归比较三步完成排序,提供完整可运行示例,帮助开发者理解分治策略在数组排序中的应用。
快速排序原理与步骤
快速排序的核心思想非常直观,整个排序过程主要包含三个关键步骤:
第一步,从数据集中选取一个元素作为基准点。
第二步,创建两个数组,分别用于存储小于和大于基准点的元素。
第三步,利用递归函数对左右两个子数组继续进行排序比较。
具体实现可参考以下演示:http://jsdo.it/norahiko/oxIy/fullscreen(网页打开可能较慢,请耐心等待加载)
JavaScript 代码实现
<script type="text/javascript">
function quickSort(arr){
if(arr.length<=1){
return arr;//如果数组只有一个数,就直接返回;
}
var num = Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整
var numValue = arr.splice(num,1);//找到中间数的值
var left = [];
var right = [];
for(var i=0;i<arr.length;i++){
if(arr[i]<numValue){
left.push(arr[i]);//基准点的左边的数传到左边数组
}
else{
right.push(arr[i]);//基准点的右边的数传到右边数组
}
}
return quickSort(left).concat([numValue],quickSort(right));//递归不断重复比较
}
alert(quickSort([32,45,37,16,2,87]));//弹出“2,16,32,37,45,87”
</script>