我太弱了,看不出来(悲)
归并排序
#include<bits/stdc++.h>
using namespace std;
int n;
int a[600005];
int b[600005];
void mergee(int l,int r){
int mid=(l+r)>>1;
int lp=l,rp=mid+1,x=1;
while(lp <= mid && rp <= r){
if(a[lp]<=a[rp]){
b[x++]=a[lp];
lp++;
}
else{
b[x++]=a[rp];
rp++;
}
}
while(lp<=mid){
b[x++]=a[lp];
lp++;
}
while(rp<=r){
b[x++]=a[rp];
rp++;
}
for(int i=l;i<=r;i++){
a[i]=b[i];
}
return;
}
void mergesort(int l,int r){
if(l==r){
return;
}
int mid=(l+r)>>1;
mergesort(l,mid);
mergesort(mid+1,r);
mergee(l,r);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
mergesort(1,n);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}