现有两个数组A和B长度都为n,且每个数组中的元素都是升序排列,设计一个在时间空间上都尽可能高效的算法,来寻找两个数组整体上的中位数。
1. Merge排序选择第n和n+1个即可,但是这个复杂度是O(2*n)的,空间是O(n+1)的,因为找到第n和n+1个停止即可,不需要继续进行归并。
2. 败者树,其实这个在时间复杂度上没有优化也是O(2*n)的,但是在空间复杂度上进行了一定的优化为C级别的。
现有两个数组A和B长度都为n,且每个数组中的元素都是升序排列,设计一个在时间空间上都尽可能高效的算法,来寻找两个数组整体上的中位数。
1. Merge排序选择第n和n+1个即可,但是这个复杂度是O(2*n)的,空间是O(n+1)的,因为找到第n和n+1个停止即可,不需要继续进行归并。
2. 败者树,其实这个在时间复杂度上没有优化也是O(2*n)的,但是在空间复杂度上进行了一定的优化为C级别的。