归并排序
2026-04-27 15:52:58
发布于:浙江
1阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int N = 1000010;
int n,a[N],b[N];
void merge(int l1,int r1,int l2,int r2){
int i = l1,j = l2;
int d = l1;
while(i<=r1 && j<=r2){
if(a[i] <= a[j]){ //小到大
b[d++] = a[i++];
}
else{
b[d++] = a[j++];
}
}
while(i<=r1) b[d++] = a[i++];
while(j<=r2) b[d++] = a[j++];
for(int i = l1;i<=r2;i++) a[i] = b[i];
}
void merge_sort(int l,int r){
if(l==r) return ;
int mid = (l+r)/2;
merge_sort(l,mid);
merge_sort(mid+1,r);
merge(l,mid,mid+1,r);
}
int main(){
cin>>n;
for(int i = 1;i<=n;i++) cin>>a[i];
merge_sort(1,n);
for(int i = 1;i<=n;i++) cout<<b[i]<<" ";
return 0;
}
这里空空如也





有帮助,赞一个