合并后排序:将所有数组合并成一个大数组,然后对这个数组进行排序,最后找到中位数。这种方法简单直接,但如果数组总长度非常大时,可能效率不高。
(n路归并)排序:合并的时候先将各个数组排序,然后采用n路归并的方式不断的将有序值取出(会用到数组指针,每一个元素对应其数组被取出元素的进度),直至取出到总长度的一半,时间复杂度为(nlogx)+O(n*TL),其中前者为各个数组的排序的时间复杂度之和(假设最长的数组长度为x),后者TL为这n个数组的总长度。
(n路归并的优化)优先队列(堆):使用最小堆(或最大堆)逐个合并数组。每次从堆中取出最小(或最大)元素,直到达到总长度的一半,以此找到中位数。这种方法比直接排序更高效一些。
基于快速排序的选择方法(效率最快):首先需要将n个数组合并,然后快排+二分进行求解