快速排序是一种常用的排序算法,它采用分治法的思想,通过递归地将数组分成较小的部分来进行排序。下面是一个简单的 JavaScript 实现:
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
// 选择基准点(pivot)
const pivot = arr[0];
// 将数组分成两部分:小于基准点的部分和大于基准点的部分
const less = arr.slice(1).filter(element => element <= pivot);
const greater = arr.slice(1).filter(element => element > pivot);
// 递归地对小于和大于基准点的部分进行快速排序
return quickSort(less).concat([pivot], quickSort(greater));
}
// 示例
const unsortedArray = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
const sortedArray = quickSort(unsortedArray);
console.log(sortedArray);
这个实现中,选择数组的第一个元素作为基准点(pivot)。然后,将数组中小于等于基准点的元素放在左侧,大于基准点的元素放在右侧。接着,递归地对左右两部分进行快速排序,最终将它们合并起来。
注意:上述实现并没有对原始数组进行就地排序,而是返回了一个新的有序数组。在实际应用中,你可能会在原始数组上进行排序,而不是创建新的数组。