<p> 有两个有序数组,int nums1[ ] = { 1,2,3,0,0,0 }和int nums2[ ] = { 2,5,6 }。不开辟新空间的情况下将nums2数组中的内容合并到nums1中,结果为:nums1[ ] = { 1,2,2,3,5,6 },本文采用两种方法实现合并。</p>
讯享网
从两个数组的最后一位有效元素开始比较,大的元素拷贝到nums1的最后一位,并依次往前拷贝。具体操作如下:
代码实现:
讯享网
运行结果:
首先元素插入数组的思想如下(假设数组后面都是0):
用代码实现就是从下标5的位置开始,把下标5的值赋给下标为6的元素,之后移动到下标为4处,将下标4的元素的值赋给下标为5的元素:
回到数组合并,合并的思路:两组数组都从头开始比较。
1.若nums2中的元素较小,则插到与nums1元素的前面。
2.若nums2中的元素较大且小于nums1的下一个元素,则插到nums1元素的后面。
3.若nums2中的元素都比nums1中的元素大,则直接将nums2中剩下的元素嫁接到nums1数组的后面即可。
代码实现:
运行结果:
虽然方法1要比方法2简单得多,但是方法2的插入元素的思路在c语言中的应用也很广泛,因此方法2的逻辑也很重要。另外如果本文对你起到了帮助,希望可以点赞👍+关注😎+收藏👌哦!如果有遗漏或者有误的地方欢迎大家在评论区补充~!!谢谢大家!!( ̄︶ ̄)↗

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/141578.html