利用分治策略試設計乙個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...