程序的一个关键是在每次划分子数组的时候要保证两个子数组的元素个数相等 。因此,要对元素个数做出奇偶判断。
public static int getMiddle(int[]a,int[]b,int astart,int aend,int bstart,int bend){
int amid=(aend+astart)/2; int bmid =(bend+bstart)/2; System.out.println("amid:"+amid+" bmid:"+bmid); if(a[amid]==b[bmid]){ System.out.println(a[amid]); return a[amid]; }else if(astart==aend&&bstart==bend){ System.out.println(a[astart]<b[bstart]?a[astart]:b[bstart]); return a[astart]<b[bstart]?a[astart]:b[bstart]; } else if(a[amid]<b[bmid]) { if((aend-astart+1)%2==0) return getMiddle(a,b,amid+1,aend,bstart,bmid); else return getMiddle(a, b, amid, aend, bstart, bmid); } else{ if((bend-bstart+1)%2==0) return getMiddle(a,b,astart,amid,bmid+1,bend); else return getMiddle(a, b, astart, amid, bmid, bend); } } |
|