您的位置:首页 > 文旅 > 旅游 > 太原疫情防控最新通知_深圳市龙岗区平湖疫情最新消息_seocui cn_新软件推广

太原疫情防控最新通知_深圳市龙岗区平湖疫情最新消息_seocui cn_新软件推广

2024/10/6 20:33:49 来源:https://blog.csdn.net/2301_80151359/article/details/142285421  浏览:    关键词:太原疫情防控最新通知_深圳市龙岗区平湖疫情最新消息_seocui cn_新软件推广
太原疫情防控最新通知_深圳市龙岗区平湖疫情最新消息_seocui cn_新软件推广

题目描述

思路

     思路:创建三个指针,L1指向num1最后一个有效数据的位置,L2指向num2最后一个有效数据的位置,L3指向num1最后一个位置。比较L1和L2位置的数据,谁大,谁往L3的位置放数据。

画图解释

创建三个指针,L1指向num1最后一个有效数据的位置,L2指向num2最后一个有效数据的位置

L3指向num1最后一个位置

比较L1和L2位置的数据,谁大,谁往L3的位置放数据。

case1:L2先小于0(L2<0)不需要处理

 

上面是此题的一种情况,下面我们来看此题另一种情况

case2:L1先小于0,(L1<0)需要处理

综上,结束条件:要么L1<0,要么L2<0 

若L1先小于0,(L1<0)需要处理,要把num2中的数据循环放到num1;

若L2先小于0,则不要处理,因为此时num2中的数据已经有序的放到num1。

完整代码

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) 
{int L1=m-1;int L2=n-1;int L3=m+n-1;while(L1>=0&&L2>=0){if(nums1[L1]>nums2[L2]){nums1[L3--]=nums1[L1--]; }else{//要么L1==L2,要么L2>L1nums1[L3--]=nums2[L2--];}}//跳出while有两种情况:1.L1<0(需要处理); 2.L2<0(不需要处理)while(L2>=0){nums1[L3--]=nums2[L2--];}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com