老师您先看图,归并排序问题,有个小问题

来源:3-2 归并排序法的实现

我会回来的333

2021-05-01

图片描述
老师,归并排序有个问题,这个画出来的地方实在搞不懂,为啥前面数组的标记超了它最后一个元素位置就给a[k]赋值上后面数组中标记的头部元素的值呢?而且前面两个判断为啥放在后两个判断的前面?我试了试如果不加或者放后面都会数组角标越界,后两个else if条件这里也给我迷了半天,有等于的时候必须得选出较小的那个元素赋上值,这里很精巧,否则排出来就错了 : )

写回答

2回答

liuyubobobo

2021-05-01

fF > middle,说明前面的半个数组都已经处理完了,现在只剩下后面的半个数组还有元素没有处理了;

sF > r,说明后面的半个数组都已经处理完了,现在只剩下前面的半个数组还有元素没有处理了;

请仔细理解一下 fF 和 sF 到底是什么意思。他们指向了当前待处理的前面数组的元素和后面数组的元素,但超过了“界”,就说明处理完了。


先判断这两个情况,是因为要保证 fF 和 sF 在“界”内,换句话说,保证前半段和后半段数组都还有元素没有处理,下面的两个判断,则是针对前半段的一个还没有处理的元素和后半段的一个还没有的元素做比较。


继续加油!:)

1
1
我会回来的333
老师您看下我那个结论,解决了,继续找下一个问题答案
2021-05-01
共1条回复

我会回来的333

提问者

2021-05-01

//img.mukewang.com/szimg/608e506a0936b64209440554.jpg

//img.mukewang.com/szimg/608d67640984077908440631.jpg

这是算法4里面的图,老师,找找了

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程