程式分析:
(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...