js快速排序算法(js 快速排序)
简介:
快速排序是一种常用的排序算法,它是一种分而治之的排序算法。它的基本思想是通过每次选取一个基准元素,将待排序序列不断划分为两个子序列,使得左子序列的元素都小于基准元素,右子序列的元素都大于基准元素,然后对左右子序列进行递归排序,最终得到有序的序列。
多级标题:
1. 选择基准元素
2. 划分序列
3. 递归排序
4. 实现快速排序算法
内容详细说明:
1. 选择基准元素
在快速排序算法中,首先需要选择一个基准元素。基准元素可以是序列中的任意一个元素,一般选择序列的第一个元素或者最后一个元素作为基准元素。
2. 划分序列
选定基准元素后,将序列划分为两个部分,分别为小于基准元素的部分和大于等于基准元素的部分。可以使用两个指针来指向划分的位置,一个指针从头开始,一个指针从尾开始,然后两个指针同时向中间移动,当两个指针相遇时停止移动。在移动的过程中,不符合划分条件的元素需要进行交换。
3. 递归排序
完成划分后,得到的两个子序列分别是小于基准元素的部分和大于等于基准元素的部分。然后对这两个子序列进行递归排序,直到子序列的长度为1时停止递归。
4. 实现快速排序算法
以下是使用JavaScript实现快速排序算法的示例代码:
```javascript
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
var arr = [5, 2, 6, 3, 1, 4];
console.log(quickSort(arr));
```
以上代码实现了快速排序算法。首先判断数组长度是否小于等于1,小于等于1时直接返回数组。然后选择基准元素,将数组划分为左右两个子序列。对左右子序列进行递归排序,最后再将排序后的左序列、基准元素和排序后的右序列拼接起来,得到最终的排序结果。