快速排序模板
2022-1024
记录一下自己的刷题历程!精进不休,Fighting!
链接: Acwing题目链接
代码模板如下:
#include<vector>
#include<iostream>
using namespace std;
vector<int>v;
void quickSort(vector<int>&v,int l,int r)
{
//如果左边界下标>=右边界下标,说明已经已经完成分而治之,直接返回
if(l>=r) return;
//因为后面do~while语句会提前+和提前-一次,
//x表示pivot值
int i=l-1,j=r+1,x=v[(l+r)>>1];
while(i<j)
{
do i++;while(v[i]<x);
do j--;while(v[j]>x);
if(i<j) swap(v[i],v[j]);
}
quickSort(v,l,j);
quickSort(v,j+1,r);
//以相遇的时候,即i=j的时候j的值作为新的分组边界
}
int main(){
int n;
while(cin>>n){
while(n--){
int num;
cin>>num;
v.push_back(num);
}
quickSort(v,0,v.size()-1);
for(auto i:v){
cout<<i<<' ';
}
cout<<endl;
v.clear();
}
return 0;
}在这里插入代码片