演算法實驗之分治法求中位數

2021-06-03 22:57:33 字數 727 閱讀 1200

利用分治策略試設計乙個o (log n)時間的演算法求出這2n個數的中位數。

要輸入的內容在檔案1.txt中,輸出的結果在檔案2.txt中。

#include#includeusing namespace std;

template t mid(t *a,t *b,int len)

int n;

if(len%2==0)

n=len/2;

else

n=len/2+1;

if(*(a+n-1)==*(b+n-1))

return *(a+n-1);

else if(*(a+n-1)

return mid(a+n-1,b,n);

else if(*(a+n-1)>*(b+n-1))

return mid(a,b+n-1,n);

}int main()

{ int a[5];

int b[5];

ifstream f1("1.txt");

ofstream f2("2.txt");

int len;

f1>>len;

for(int i=0;i>a[i];

for(i=0;i>b[i];

int *pa=a;

int *pb=b;

int m=mid(pa,pb,len);

cout<

找中位數問題 分治法

題目 設a和b都是從小到大已經排好序的n個不等的整數構成的陣列,如果把a與b合併後的陣列記作c,設計乙個演算法找出c的中位數。解題思路 思路一 對將a和b合併數組成c,並且進行排序,然後直接輸出中位數。該演算法的時間複雜度為 o nlogn 空間複雜度為 o n 思路二 利用分治法。假定a 0,n ...

分治法 中位數問題,C

採用分治法完成如下任務 中位數問題 問題描述 設x 0 n 1 和y 0 n 1 為兩個陣列,每個陣列中含有n個已排好序的數。找出x和y的2n個數的中位數。程式設計任務 利用分治策略試設計乙個o log n 時間的演算法求出這2n個數的中位數。資料輸入 由檔案input.txt提供輸入資料。檔案的第...

演算法 堆 求整型中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。例如,2,3,4 的中位數是 3 2,3 的中位數是 2 3 2 2.5 設計乙個支援以下兩種操作的資料結構 vo...