(演算法)C語言得到兩個公升序序列的中位數

2021-08-28 08:46:58 字數 581 閱讀 2481

乙個長度為l (l>=1)的公升序序列s,處在第⌈l/2⌉ 個位置的數稱為s的中位數。例如,若序列s1=(11, 13, 15, 17, 19),則s1的中位數是15,兩個序列的中位數是含它們所有元素的公升序序列的中位數。例如,若s2= (2, 4,6,8, 20),則s1和s2的中位數是11。現在有兩個等長公升序序列a和b,試設計乙個在時間和空間兩方面都盡可能高效的演算法,找出兩個序列a和b的中位數。

方法一對兩個序列合併為乙個公升序序列s3,則s3[l]就是兩個序列的中位數。(找出第l個元素即可,不用合併)

方法二方法一

#includeint findmid(int s1,int s2,int len)else

}elseelse

}m1 = (l1+r1)/2;

m2 = (l2+r2)/2;

if(r1==l1 || r2==l2) return s1[m1]>s2[m2]?s2[m2]:s1[m1];//剩乙個元素,小的為中位數

}}void main();

int s2 = ;

printf("%d",findmid2(s1,s2,5));

}

求解兩個公升序序列的中位數

描述 乙個長度為l l 1 的公升序序列s,處在第l 2 若為小數則去掉小數後加1 個位置的數稱為s的中位數。例如,若序列s1 11,13,15,17,19 則s1的中位數是15。兩個序列的中位數是含它們所有元素的公升序序列的中位數。例如,若s2 2,4,6,8,20 則s1和s2的中位數是11。現...

兩個等長公升序序列找中位數

乙個長度為 l 的公升序序列 s,處在第 個位置的數稱為 s 的中位數。例如,若序列 則 的中位數是 15,兩個序列的中位數是含他們所有元素的公升序序列的中位數。例如,若 則 和 的中位數是 11。現在有兩個等長公升序序列 a 和 b,試設計乙個演算法,找出兩個序列 a 和 b 的中位數。把 a 和...

求解兩個等長公升序序列的中位數

2011年計算機聯考真題 題目描述 乙個長度為l l 1 的公升序序列s,處在第 l 2 個位置的數稱為s的中位數。例如,若序列s1 11,13,15,17,19 則s1的中位數是15,兩個序列的中位數是含它們所有元素的公升序序列的中位數。例如,若s2 2,4,6,8,20 則s1和s2的中位數是1...