8️⃣ 快速排序
#include <iostream>
#include <vector>
using namespace std;
void Quick(vector<int> &a, int left, int right){
int key = a[left];
int i = left, j = right;
while(i<j){
while(i<j&&a[j]>=key) j--;
while(i<j&&a[i]<=key) i++; //顺序很重要,这两行不能颠倒
if(i<j) swap(a[i], a[j]);
}
swap(a[i], a[left]);
if(left<right){
Quick(a, left, i-1);
Quick(a, i+1, right);
}
}
void QuickSort(vector<int> &a){
Quick(a, 0 ,a.size()-1);
}
int main(){
vector<int> a{3,6,0,7,1,9,9,7,10,3,4,5,6,4};
QuickSort(a);
for (int i=0; i!=a.size(); i++)
cout << a[i] << " ";
return 0;
}