兩個排序陣列的中位數

2021-08-01 12:09:31 字數 795 閱讀 1742

兩個排序的陣列a和b分別含有m和n個數,找到兩個排序陣列的中位數,要求時間複雜度應為o(log (m+n))。

給出陣列a = [1,2,3,4,5,6] b = [2,3,4,5],中位數3.5

給出陣列a = [1,2,3] b = [4,5],中位數 3

public double findmediansortedarrays(int a, int b) 

return (

findkth(a, 0, b, 0, len / 2) + findkth(a, 0, b, 0, len / 2 + 1)

) / 2.0;

}// find kth number of two sorted array

public static int findkth(int a, int a_start,

int b, int b_start,

int k)

if (b_start >= b.length)

if (k == 1)

int a_key = a_start + k / 2 - 1 < a.length

? a[a_start + k / 2 - 1]

: integer.max_value;

int b_key = b_start + k / 2 - 1 < b.length

? b[b_start + k / 2 - 1]

: integer.max_value;

if (a_key < b_key) else

}}

兩個排序陣列的中位數

求兩個排序陣列中位數,這道題是很有意思的一道題目,演算法導論中9.3 8題,這題必須在o logn 的時間複雜度求解,否則肯定悲劇。這題有個關鍵的條件,那就是這兩個陣列長度相等 思路如下 陣列a 1,3,5,7,9 陣列b 2,4,6,8,10 首先取二者的中位數,在o 1 時間複雜度內求出,那麼陣...

兩個排序陣列的中位數

求兩個排序陣列中位數,這道題是很有意思的一道題目,演算法導論中9.3 8題,這題必須在o logn 的時間複雜度求解,否則肯定悲劇。這題有個關鍵的條件,那就是這兩個陣列長度相等 思路如下 陣列a 1,3,5,7,9 陣列b 2,4,6,8,10 首先取二者的中位數,在o 1 時間複雜度內求出,那麼陣...

兩個排序陣列的中位數

來自leetcode的兩個排序陣列的中位數 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不同時為空。思路 合併陣列 對陣列排序 得到中位數 片.findmedi...