設數組A(A的個數為偶數):2 4 6 8 19 24
設數組B(B的個數為偶數):7 9 11 13 15 17
m1 = (start1 + end1) / 2;
m2 = (start2 + end2) / 2;
start1 = 0, end1 = n – 1
start2 = 0, end2 = n – 1
此時(start1 +
end1) % 2 != 0,說明序列個數為偶數個
所以A[m1] =
(A[m1] + A[m1+1]) / 2;
B[m2] = (B[m2] + B[m2+1]) / 2;
1)若a=b,則a或b即為所求中位數,算法結束。
2)若a<b, 則舍棄序列A中較小的一半,同時舍棄序列B中較大的一半,要求兩次舍棄的長度相等。
3)若a>b,則舍棄序列A中較大的一半,同時舍棄序列B中較小的一半,要求兩次舍棄的長度相等。
在保留的兩個升序序列中,重復過程1)、2)、3),直到兩個序列中均只含一個元素時為止,上面所求的中位數較小者即為所求的中位數。
Java代碼如下