如题所述
请问为什么数组元素会被使用完呢:)
追答因为题目要求的是把a、b数组中的元素有序地存进c中,说明每个元素只能存一次,存进c后就不用再管了,相当于使用完了。
追问嗯嗯。那么按照答案的话,不是数组a,b都正好用完了吗,不需要最后两个else if ,else了?
追答a、b都用完是最终的结果,还有a、b数组都没用完的情况,这是最后两个else if else所处理的。
追问请问为什么会没有用完的情况呢,不好意思哈
追答我觉得你没明白整个思路。我打个比方来说吧,有两个按身高从矮到高排好的队伍,一个a队,一个b队。现在要求把两队合一队,也是从矮到高排。如果让我负责,我就会让排在两队第一个的人a1、b1比比身高,发现a1矮些,那么我就会让a1单独出来组成c队。然后,让a2和b1比比身高,发现b1比a2矮,那么b1排到c队。。。以此类推,后来我发现a队的人大多数都比b队矮,导致a队的人都已经排进c队了,而b队还剩几个人,那么剩下的这几个人直接依次排到c队就好了。
题目中的代码思路类似,只不过它考虑方式倒过来,它先根据角标j来判断b队是否排完,如果b队排完,那么让a队的排进c队;如果b队没排完,再根据角标i看a队,如果a队排完,就让b队的排进c队,如果a队也没排完,那么让目前a、b两队的人作比较,矮的排进c队。
追问谢谢你的解答,很全面,很耐心:)我仔细思考了后,想问:是不是题目省去了a、b两数组比较大小的过程,直接开始把数组放入?
追答没有省去,只是放在判断a、b是否用完后面,也就是在你所问过的最后两个else if, else部分。
追问如果b队排完后a队也排进c队,我觉得这没有排序,不好意思哈,麻烦你再解释一下
追答这里确实没排序,因为没必要了。原先a就是从小到大排好了的,既然b已经排完了,那么a就直接按次序排到c后面就行。
追问好的,谢谢,麻烦你了:)