老师,归并排序什么情况下会产生这种越界啊,没想明白

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

_爱健身的码农_03883871

2017-02-07


if (i>mid) {

arr[k]=refArr[j-l];

j++;

}else if(j>r){

// System.out.println("j"+j);

// System.out.println("r"+r);

arr[k]=refArr[i-l];

i++;

}


写回答

1回答

liuyubobobo

2017-02-07

我没有很明白你的问题。如果你问的是这两个if在什么时候才会执行的话,那就是归并两个子数组的时候,一方率先归并完成的时候,i(或者j)已经越界,此时只需要依次将另外一个子数组的数据逐渐填入剩余位置即可。试试自己用纸笔走一下这两个子数组的归并情况:)


1 3 4 5 | 2 6 7 8


1 3 7 8 | 2 4 5 6

4
3
liuyubobobo
回复
_爱健身的码农_03883871
加油!:)
2017-02-07
共3条回复

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

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

11186 学习 · 1614 问题

查看课程