c 兩陣列取中位數 快速排序

2021-10-09 14:51:22 字數 1164 閱讀 3611

給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。

請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。

你可以假設 nums1 和 nums2 不會同時為空。

示例 1:

nums1 = [1, 3]

nums2 = [2]

則中位數是 2.0

示例 2:

nums1 = [1, 2]

nums2 = [3, 4]

則中位數是 (2 + 3)/2 = 2.5

標頭檔案

#include

#include

using

namespace std;

解決方案類:

class

solution

cout << endl;

if(len %2==

1)else

}void

qksort

(vector<

int>

& r,

int low,

int high)

}int

qkpass

(vector<

int>

& r,

int left,

int right)

if(low < high)

while

(low < high && r[low]

< x)

if(low < high)

} r[low]

= x;

return low;}}

;

主函式

int

main()

; vector<

int> b =

;double result = s.

findmediansortedarrays

(a, b)

; cout << result << endl;

return0;

}

結果

快速排序 QuickSort 中位數實現

注意事項 quicksort data,seq,low org,low 1 quicksort data,seq,low 1,high org 遞迴函式quicksort中最後遞迴呼叫的時候,因為 中位數的值pivot已經處於陣列中的正確位置,因此 必須採用 low 1 和 low 1,這樣才能不斷...

題目 兩個排序陣列的中位數(C )

紀念一下,這個是我第一次提交的程式就超過了百分之百的提交記錄 程式如下 static const auto io speed up class solution else if length 2 return nownum else return double nownum prenum 2 觀察了...

兩個排序陣列的中位數

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