归并排序
2023-07-25 14:39:30
发布于:河北
#include <bits/stdc++.h>
using namespace std;
int a[114514],t[114514],n;
void merge(int l,int r,int mid){
int i=l,j=mid+1,k=l;
while(i<=mid&&j<=r){
if(a[i]<a[j]) t[k++]=a[i++];
else t[k++]=a[j++];
}
while(i<=mid)t[k++]=a[i++];
while(j<=r)t[k++]=a[j++];
for(int i=l;i<=r;i++){
a[i]=t[i];
}
}
void sep(int l,int r){
if(l>=r)return;
int mid=(l+r)/2;
sep(l,mid);
sep(mid+1,r);
merge(l,r,mid);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sep(1,n);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}
```cpp
全部评论 3
谢谢
2023-07-25 来自 河北
0好哇
2023-07-25 来自 广东
0shuanq
2023-07-25 来自 广东
0
有帮助,赞一个