题目:There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
分析:暴力重排序,复杂度O((m+n)log(m+n)),最好的情况也是O(m+n),因此无法使用。
本题需要用分治的算法来达到题目的要求。
首先中位数的求法一般是奇数长度和偶数长度分类讨论,这里给出一个统一的公式:
对于数组A,其长度为N,则他的中位数是 (A[(N-1)/2] + A[N/2]) / 2。 这里的除号是计算机整数除法,就是向下取整。
证明:当N为奇数时,(N-1)/2和N/2 相等,就是数组中位数的位置。例如 N = 3, (N-1)/2 = 1, N/2 = 1
当N为偶数时,(N-1)/2和N/2不等,中位数为最中间的两个数字。例如 N=4, (N-1)/2=1, N/2 =2。
接下来考虑两个数组的情况,