快速排序法
第一种写法:定标杆在起点
时间复杂度:平均o(nlogn),最坏o(n^2)
代码如下:
点击查看代码
#include <bits/stdc++.h>
using namespace std;
void quick_sort(int a[],int b,int e)
{
if(b>=e) return;
int temp = a[b];
int i = b,j = e;
while(i<j)
{
while(j>i&&a[j]>=temp) j--;//注意这里一定要找到严格小于的,否则会出错
while(j>i&&a[i]<=temp) i++;//注意这里一定要找到严格大于的,否则会出错
if(i<j) swap(a[i],a[j]);
}
a[b] = a[i];
a[i] = temp;
quick_sort(a,b,i-1);
quick_sort(a,i+1,e);
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n;
cin>>n;
int a[n+1];
for (int i = 1;i<=n;i++) cin>>a[i];
quick_sort(a,1,n);
for (int i = 1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}