题单:归并排序
样例 #1
样例输入 #1样例输出 #1
2 5
4 7
2 4 5 7
1 3
2 6
1 2 3 6
1 2 2 3 4 5 6 7
1 2 2 3 4 5 6 7
#include<bits/stdc++.h>
using namespace std;
int n,a[1000005],tmp[1000005];
void mearge(int l,int mid,int r)
{int i=l,j=mid+1,k=l;while(i<=mid&&j<=r){if(a[i]<a[j]) tmp[k++]=a[i++];else tmp[k++]=a[j++];}while(i<=mid) tmp[k++]=a[i++];while(j<=r) tmp[k++]=a[j++];for(int i=l;i<=r;i++){a[i]=tmp[i];cout<<a[i]<<" ";}cout<<endl;
}
void mearge_sort(int l,int r)
{if(l==r){return ;}int mid=(l+r)/2;mearge_sort(l,mid);mearge_sort(mid+1,r);mearge(l,mid,r);
}
int main(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];mearge_sort(1,n);for(int i=1;i<=n;i++){cout<<a[i]<<" ";}return 0;
}