一道经典的算法题
目录
1 题目描述
给出两个有序数列,长度为的数列
和 长度为
的数列
,求两个有序数列中所有数的中位数。
中位数:
设一共有n(>0)个数的有序数列arr,
若n为奇数,则中位数为arr[n/2];
若n为偶数,则中位数为(arr[n/2-1]+arr[n/2])/2.0。
限制:
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
输入(C++):
- (vector<int>&,vector<int>&)
输出(C++):
- double
2 算法
2.1 合并序列求中位数
实现简单,但算法复杂度较高。
2.1.1 算法描述
step 1:将两个有序数列进行归并,生成新的有序数列,数列长度为
。
step 2:按照中位数定义求的中位数并返回。