快速排序算法的思想
快速排序是对冒泡排序的改进,它使用分治法的思想,每次循环根据指定的基准数,将其他元素分别放置其左右(升序排序,大的放右小的放左),第二次循环,以基准数为中心,分为左右两部分,每部分再通过新的基准数排序…
(不做具体举例说明,直接分析时间复杂度然后粘贴代码)
快速排序算法的时间/空间复杂度
排序n个项目要比较O(n log n)次比较
-
在最优的情况下,快速排序算法的时间复杂度为O(nlogn)。
-
在最坏的情况下,快速排序算法的时间复杂度为O(n2)
-
最好情况,递归树的深度为log2n,其空间复杂度也就为O(logn)。
-
最坏情况,需要进行n‐1递归调用,其空间复杂度为O(n),平均情况,空间复杂度也为O(logn)。
可惜的是,由于关键字的比较和交换是跳跃进行的, 因此,快速排序是一种不稳定的排序方法。
快排算法的代码实现-递归(C++)
#include <iostream>
using namespace std;
void quick_sort_recursive(int arr[], int start, int end)
{
if (start > end