关于归并过程

关于归并过程

老师这是我在算法4里面看到的代码,没想明白为什么最后的过程是temp【i++】和temp【j++】
https://img1.sycdn.imooc.com//climg/623c811d0871039010010751.jpg
https://img1.sycdn.imooc.com//climg/623c811908b31dfe10010751.jpg
https://img1.sycdn.imooc.com//climg/623c811d088b9cc810010751.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2022-03-25 01:16:00

我不确定我是不是理解了你的问题。


temp[i ++] 是取左半部分的元素;temp[j ++] 是取右半部分的元素。


for 中的 4 个 if else 是指:


  1. 如果左半部分的元素已经取完,则取右半部分的元素;

  2. 如果右半部分的元素已经取完,则取左半部分的元素;

  3. 此时说明左半部分和右半部分都有元素可取,如果左边当下该取的元素 > 右边当下该取的元素,则取右边的元素

  4. 否则(说明左边当下该取的元素 <= 右边当下该取的元素),则取左边的元素


继续加油!:)

  • 提问者 慕用2297853 #1
    老师我的疑问是temp【0】相对于nums【i】的偏移量不还是l吗?为什么不是temp【j-l】啊?
    2022-03-25 08:18:42
  • liuyubobobo 回复 提问者 慕用2297853 #2

    这个代码里 temp 和 nums 之间没有偏移。34 行的赋值,nums[i] 就存在 temp[i] 中。这个优化课程后续会介绍的。你也可以使用一个小数据量实际测试跟踪一下,看一下具体到每一步中,各个变量里的数值到底都是什么?和你想的是否一样?如果不一样,哪里不一样?自己哪里想错了。实际去跟踪调试代码的运行,而不仅仅靠“想象”,是学习算法乃至是计算机任何领域的重要方式哦。进步就在这个过程中。继续加油!:)

    2022-03-25 14:41:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

算法与数据结构
  • 参与学习       2627    人
  • 解答问题       1105    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师