1. 快速排序
- 平均/最好时间复杂度O(nlogn),最坏时间复杂度O(n^2),不稳定
工作过程
- 区间内只剩一个/没有数时,结束递归
- 找区间左端当作参考值
ref
进行划分 partition
,并得到 ref
应该在的index
;划分后 index
左边的都比 ref
小,右边的都比 ref
大
- 对
index
左右递归的进行快速排序
快排代码
#include<iostream>
#include<vector>
using namespace std;
void quickSort(vector<int>& arr,int l,int r);
int partition(vector<int>& arr,int l,int r);
int main()
{
int a[12]={
100,3,78,-7,0,-15,6,45,6,103,33,-7};
vector<int> arr(a,a+12);
quickSort(arr,0,arr.size()-1);
for(auto it:arr)
cout<<it<<" ";
}
void quickSort(vector<int>& arr,int l,int r){
if(l>=r)
return;
int index=partition(arr,l,r);
quickSort(arr,l,index-1);
quickSort(arr