while(p1<=mid&&p2<=r){
if(arr[p1]<=arr[p2]){
temp[p++]=arr[p1++];
}else{
temp[p++]=arr[p2++];
}
}
while(p1<=mid){
temp[p++]=arr[p1++];
}
while(p2<=r){
temp[p++]=arr[p2++];
}
for(int i=0;i<p;i++){
//存入数组
arr[i+l]=temp[i];
}
}
void merge(int arr[],int l,int r){
if(l>=r){
return;
}
int mid=(l+r)/2;
//左边拆分
merge(arr,l,mid);
//右边拆分
merge(arr,mid+1,r);
//合并并排序
mergeSort(arr,l,mid,r);
}
int main()
{
cin>>n;
int *arr=new int[n];
for(int i=0;i<n;i++){
cin>>arr[i];
}
merge(arr,0,n-1);
for(int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
return 0;
}

3,5,7,2,8,1,4,6
八个数从小到大排序
一、
1、首先主函数中调用函数 merge(arr,0,7)
2、mid=3,调用函数merge(arr,0,3)
3、mid=1,调用函数merge(arr,0,1)
4、mid=0,调用函数merge(arr,0,0), 符合if条件 return 跳出
5、进入下一个函数merge(arr,1,1),符合if条件 return跳出
6、进入合并排序函数 mergeSort(arr,0,1,1),排序——3,5
7、返回上一步 merge(arr,2,3)
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。



由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-maXdabxr-1710851664347)]
文章讲述了Java中的合并排序算法实现,包括`merge`和`mergeSort`函数,并提到一份针对Java开发的全套学习资料,包含了大厂经验、学习资源和实践项目,旨在帮助初级工程师提升技能。
785

被折叠的 条评论
为什么被折叠?



