找出有序数组X和Y中所有元素的中位数(X,Y分别含n个元素)
(算法导论第三版9.3-8)
时间复杂度O(lgn)
int find_median_two_ordered_arrays(int *array_a,int *array_b,int length)
{int a_start = 0,a_end = length - 1,b_start = 0,b_end = length - 1;while (true){int median_a = array_a[a_start + (a_end - a_start)/2];int median_b = array_b[b_start + (b_end - b_start)/2];if(median_a == median_b) return median_a;else if(a_start == a_end){return array_a[a_start]<array_b[b_start]?array_a[a_start]:array_b[b_start];}//保证数组大小一致if(median_a>median_b){a_end = a_start + (a_end - a_start)/2;b_start = b_end - (b_end - b_start)/2;}else{a_start = a_end - (a_end - a_start)/2;b_end = b_start + (b_end - b_start)/2;}}
}