记录一下,简单快捷的写法,下次忘了又回来看看。
1.快速排序
#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
int a[N];
void quickSort(int l,int r)
{
if(l>=r)
return ;
int t=a[l+r>>1];
int i=l-1,j=r+1;
while(i<j)
{
while(a[++i]<t);
while(a[--j]>t);
if(i<j)
swap(a[i],a[j]);
}
quickSort(l,j);
quickSort(j+1,r);
}
int main() {
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
quickSort(0,n-1);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
}
2.归并排序
#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
int a[N],t[N];
void mergeSort(int l,int r)
{
if(l>=r)
return ;
int m=l+r>>1;
mergeSort(l,m);
mergeSort(m+1,r);
int i=l,j=m+1,k=0;
while(i<=m&&j<=r)
{
if(a[i]<a[j]) t[k++]=a[i++]; //升序排序
else t[k++]=a[j++];
}
while(i<=m) t[k++]=a[i++];
while(j<=r) t[k++]=a[j++];
for(int i=l,j=0;i<=r;i++)
a[i]=t[j++];
}
int main() {
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
mergeSort(0,n-1);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
}