快速排序(Quick Sort)是一种常用的排序算法,它使用分治的思想,在数组中选择一个基准元素,将小于基准的元素放在基准的左侧,大于基准的元素放在基准的右侧,然后对左右两个子数组分别递归地进行快速排序。

以下是我的的JavaScript实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const arr = [2,1,8,4,3,5,9]
// 快速排序
function quickSort(arr){
if(arr.length<=1)
return arr
//选择基准实现
const pivot = arr[0]
//分区
const left = []
const right = []

for(let i = 1;i < arr.length;i++){
if(arr[i] < pivot)
left.push(arr[i])
else
right.push(arr[i])
}
// 递归地对左右两个子数组进行快速排序
return [...quickSort(left),pivot,...quickSort(right)]
}
console.log(quickSort(arr))

这个例子中,选择数组的第一个元素作为基准,然后将小于基准的元素放在左侧,大于基准的元素放在右侧。接着,对左右两个子数组分别递归地进行快速排序。这个过程一直递归下去,直到子数组的长度为1或0,最终合并排序完成。

这里使用了ES6的展开运算符...来合并左、基准和右三个部分。

结果如下:

image-20231208195623059