快速排序(QuickSort)
文章类型:算法
发布者:hp
发布时间:2023-05-19
快速排序(QuickSort)是常见的排序算法,通过将排序问题分解为较小的子问题来进行排序
一:定义
1:选择一个基准元素(通常是数组的第一个或最后一个元素),将数组分成两个子数组,一个包含比基准元素小的元素,另一个包含比基准元素大的元素。
2::递归地对两个子数组进行快速排序
二:步骤
1:选择一个基准元素(例如,第一个元素)。
2:遍历数组,将比基准元素小的元素放在一个左子数组中,将比基准元素大的元素放在一个右子数组中。
3:递归地对左子数组和右子数组进行快速排序。
4:合并左子数组、基准元素和右子数组,形成排序后的数组。
三:代码
const arr = [7, 2, 5, 1, 9, 3];
//第一步 选择基准元素7
//第二步 分成两个自数组,小放左[2, 5, 1, 3] ,大放右[9]
//第三步 递归对左右数组进行快速排序
//第四步,指回第一步,又找基准元素,变成左[1]右[5, 3]
//左边比较完,然后对右边开始递归比较
...
//直到空数组
//第五步 合并左子数组和右子数组
四:总结
1:时间复杂度为O(n log n):
2:平均情况下具有较好的性能
3:原地排序(in-place sorting),并且在大多数情况下具有较高的效率。然而,最坏情况下的时间复杂度为 O(n^2),当输入数组已经有序或近乎有序时,快速排序的性能可能会下降
4:需要原地排序且对时间复杂度有较高要求,可以选择快速排序