一、題目描述:(408聯考真題 2011)
二、演算法思想:
分別求兩個公升序序列a和b的中位數,設為a和b,求序列a和b的中位數過程如下:
1)若a=b,則a或b即為所求中位數,演算法結束。
2)若a3)若a>b,則捨棄序列a中較大的一半,同時捨棄序列b中較小的一半,要求兩次捨棄的長度相等。
在保留的兩個公升序序列中,重複1)、2)、3),直到兩個序列中均只含乙個元素為止,較小者即為所求。
三、核心**:
int m_search(int a,int b,int n)
if(a[m1]四、完整**:
#includeint m_search(int a,int b,int n);
void print(int a,int n);
int main()
; int b[5]=;
int n=sizeof(a)/sizeof(int);
print(a,n);
print(b,n);
printf("%d\n",m_search(a,b,n));
return 0;
}int m_search(int a,int b,int n)
if(a[m1]五、測試分析:
演算法時間複雜度lg(n),空間複雜度1。
渣渣渣變渣渣系列(1)
一 題目描述 408聯考 2010真題 二 演算法思想 可以將這個問題看作是把陣列ab轉換為ba a代表陣列的前p個元素,b代表陣列中的餘下n p個元素 先將a逆置得到a 1b,再將b逆置得到a 1b 1,最後將整個a 1b 1逆置為 a 1b 1 1 ba。三 核心 void reverse in...
渣渣渣變渣渣系列(3)
一 題目描述 二 演算法思想 本演算法的巧妙之處在於充分利用主元素的定義,即在序列中個數超過半數的元素。那麼在動態統計的過程中,主元素出現的頻率要最大可能的大於1 2。由於是動態統計,所以可能在區域性範圍內可能出現誤判,當主元素在序列分布不均時,可能一開始出現誤判,但最終是會被糾正的,這個是可以通過...
渣渣演變之路
讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後乙個拼音數字後沒有空格。輸入樣例 123456789098765...