文章目录
前言
快速排序 是一种高效的排序算法, 它基于分治策略, 通过选定的基准元素将一个数组分成两个子数组, 其中一个子数组的元素都比这个基准元素小, 另一个子数组的元素都比这个基准元素大, 然后再对这两个子数组分别进行快速排序, 最终达到整个数组都有序的目的.
Javascript 实现
代码如下(示例):
function quickSort(arr, begin, end) {
if(begin >= end) return ;
let i = begin;
let j = end;
//选第一个元素为基准值
let pivot = arr[begin];
//一轮比较到 i==j 结束
while(i < j) {
while(arr[j] >= pivot && i < j) {
j--;
}
arr[i] = arr[j];
while(arr[i] <= pivot && i < j) {
i++;
}
arr[j] = arr[i];
}
//此时arr[i]是空的,将基准元素放置到这里
arr[i] = pivot;
//此时基准元素抵达最终排序结果的正确位置,不再参与排序
quickSort(arr, begin, i-1);
quickSort(arr, i+1, end);
}
总结
快速排序算法属于不稳定排序, 通常算法的时间复杂度为 O(nlogn), 在最坏情况下(原始数组是逆序的)时间复杂度为O(n^2).