归并排序完整代码 题解
2023-12-16 18:07:45
发布于:北京
43阅读
0回复
0点赞
#include<iostream>
using namespace std;
int n,m;
int arr[23000];
void sort(int la,int ra,int lb,int rb){
int i=la,j=lb,cnt=0;
int srt[23000];
while(i<=ra&&j<=rb){
if(arr[i]<=arr[j]) srt[++cnt]=arr[i++];
else srt[++cnt]=arr[j++];
}
while(i<=ra) srt[++cnt]=arr[i++];
while(j<=rb) srt[++cnt]=arr[j++];
for(i=1;i<=cnt;i++) arr[la+i-1]=srt[i];
return;
}
void merge(int l,int r){
if(l>=r) return;
int mid=(l+r)/2;
merge(l,mid);
merge(mid+1,r);
sort(l,mid,mid+1,r);
}
int main(){
cin>>n>>m;
int s=n+m;
for(int i=1;i<=s;i++) cin>>arr[i];
merge(1,s);
for(int i=1;i<=n+m;i++) cout<<arr[i]<<' ';
return 0;
}
全部评论 1
搞归并排序干啥
2024-08-18 来自 云南
0直接三个for秒了
2024-08-18 来自 云南
0因为我要练手
2024-08-18 来自 北京
0666
2024-08-18 来自 云南
0
有帮助,赞一个