核心为分治法,平均时间复杂度为O(nlogn)。
快速排序基本思想:
选取数组中的一个数作为基准数,一般就是直接选取数组的第一个数,然后进行排序,将比基准数小的数放在基准数左边,比基准数大的数放在基准数右边,再通过递归对左右两边继续排序。
JS代码实现快速排序
function partition(arr, low, high) {
let pivot = arr[low];
while (low < high) {
while (low < high && arr[high] > pivot) {
--high;
}
arr[low] = arr[high];
while (low < high && arr[low] <= pivot) {
++low;
}
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
function quickSort(arr, low, high) {
if (low < high) {
let pivot = partition(arr, low, high);
quickSort(arr, low, pivot - 1);
quickSort(arr, pivot + 1, high);
}
return arr;
}