上课代码
2023-07-25 15:04:25
发布于:广东
#include<bits/stdc++.h>
using namespace std;
int a[114514];
void merge(int L1,int R1,int L2,int R2){
int i=L1;
int j=L2;
int cnt=0;
int t[114514];
while(i<=R1&&j<=R2){
if(a[i]<a[j]) t[cnt++]=a[i++];
else t[cnt++]=a[j++];
}
while(i<=R1){
t[cnt++]=a[i++];
}
while(j<=R2){
t[cnt++]=a[j++];
}
for(int i=0;i<cnt;i++){
a[L1+i]=t[i];
}
}
void dfs(int left,int right){
if(left>=right){
return ;
}
int mid=(left+right)/2;
dfs(left,mid);
dfs(mid+1,right);
merge(left,mid,mid+1,right);
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dfs(1,n);
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}
这里空空如也
有帮助,赞一个