尋找兩個有序陣列的中位數 C 實現

2021-10-06 15:19:21 字數 1011 閱讀 4244

程式分析:

(1)如果乙個序列有奇數個,中位數是最中間的那個數;

(2)如果乙個序列有偶數個,中位數是最中間的兩個數的平均數。

c++**:

#include

using

namespace std;

intmin

(int a,

int b)

else

}double

find

(int a,

int m,

int b,

int n,

int k)

if(m ==0)

if(k ==1)

int pa =

min(k /

2, m)

, pb = k - pa;

if(a[pa -1]

>b[pb -1]

)else

if(a[pa -1]

)else

}double

findmediansortedarrays

(int a,

int m,

int b,

int n)

else

}int

main()

cout <<

"please input the second array:"

;for

(int i =

0; i < n; i++

) num =

findmediansortedarrays

(a, m, b, n)

; cout <<

"the median of two arrays:"

<< num << endl;

return0;

}

c++執行結果:

尋找兩個有序陣列的中位數

尋找兩個有序陣列的中位數 user hihone date 2019 1 31 time 16 32 description 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 ...

尋找兩個有序陣列的中位數

思路 將兩個陣列排序,然後判斷陣列長度,長度為單數,則取二分之一處的數,否則取二分之一處和二分之一減一處的數之和除以2.var findmediansortedarrays function nums1,nums2 var mid math.floor arr.length 2 if arr.len...

尋找兩個有序陣列的中位數

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0示例 2 nums1 1,2 n...