exercise 2.1
1.question i ii iii
a n 相加 不會
b 二進位製表中的數 相乘 不會
c n 兩個數字不斷比較 不會
d 兩個輸入數中較大的數的大小,或兩個輸入數中較小的數的大小,或兩個輸入數的大小之和。 模除運算 會
e 二進位製表中的位數 從剩餘的主要候選名單中剔出若干 不會
f n 兩位數字乘法 不會
4.a:最好的情況下是2只,最差的情況下是12只
b:都在襪子丟失中,丟失的總情況數為c_102=45,假設丟失的恰好是同一雙的概率是:(c_51)/(c_10^2 )=1/9,而丟失的是不同的兩雙的概率是:(c_5^2 c_2^1 c_21)/(c_102 )=8/9,通過求期望值是4×1/9+3×8/9=28/9。
9.a.n(n+1)=2000n^2
b.100n2<0.01n3
c.log_2n=lnn
d.log(_22)n>log_2〖n2 〗
e.2(n-1)=2n
f.(n-1)!exercise 2.2
3. a.〖(n2+1)〗10≥(〖n2)〗10=n20∈θ(n20)
lim┬(n→∞)〖〖(n2+1)〗10/n^20 〗=lim┬(n→∞)〖(〖(n2+1)/n2 )〗^10=〗 lim┬(n→∞)〖(1+〖1/n^2 )〗^10=〗 1
b.√(〖10n〗2+7n+3)≥√(〖10n〗2 )=√10 n∈θ(n)
lim┬(n→∞)〖√(〖10n〗2+7n+3)/n=lim┬(n→∞)√(10+7/n+3/n2 ) 〗=10
c.2nlg(n+2)2+(n+2)2 lg n/2=4nlg(n+2)+(〖(n+2)/√2)〗^2 lg(〖n/2)〗^2
=4nlg(n+2)+(n+2)^2/2 lg n^2/4
=4nlg(n+2)+1/2 (n2+4n+4)(lgn2-lg4)
≥4nlg(n+2)+n^2/2 lgn2+2nlgn2
≥8nlgn+n^2/2 lgn2∈θ(nlgn)+θ(n2 lgn^2)
=θ(n^2 lgn^2)
d.2(n+1)+3(n-1)=2n×2+1/3×3n=θ(2^n )+θ(3^n )=θ(3^n )
lim┬(n→∞)〖(2(n+1)+3(n-1))/3^n 〗=1/3<1
e.log_2n-1≤[log_2n ]≤log_2n
log_2n-1≥log_2n-1/2 log_2〖n=1/2〗 log_2n
∴[log_2n ]∈θ(log_2n )=θ(logn)
4.a.隨著n的增大這些函式都會趨於正無窮,沒有乙個確定的函式值能證明他們的順序。
b.(1)lim┬(n→∞)〖logn/n〗=lim┬(n→∞)〖〖(log〗〖n)』〗/n』〗=lim┬(n→∞)〖1/n=0〗
∴log〖n∈ο(n)〗
(2) lim┬(n→∞)〖n/(n log_2n )〗=lim┬(n→∞)〖1/log_2n =0〗
∴n∈ο(n log_2n)
(3)由(1)式易得θ(logn)∈θ(n^2)
(4)lim┬(n→∞)〖n2/n3 〗=lim┬(n→∞)〖1/n〗=0
∴n2∈ο(n3)
(5) lim┬(n→∞)〖n3/2n 〗=lim┬(n→∞)〖(〖(n〗3)』)/(〖(2〗n)』)=lim┬(n→∞)〖(3n2)/(2n ln2)=2/1n2〗 〗 lim┬(n→∞)〖n2/2n =6/(〖1n〗^2 2)〗 lim┬(n→∞)〖1/2^n 〗=0
∴n3∈ο(2n)
(6)利用史特林公式易得2^n∈ο(n!)
5. 由前至後分別屬於的型別為:階乘,對數,指數,冪函式,對數的平方,冪函式,指數函式,具體的優先順序為:
〖5lg(n+100)〗10,〖ln〗2 n,∛n,0.001n4+3n3+1,3n,22n,(n-2)!
exercise 2.3
4.演算法求得的是n項的平方和,基本操作是乘法,這個操作執行了n次,效率型別為θ(n),假如我們使用二進位制標的位數作為度量標準那麼效率型別為θ∈(2^b),其中b=[log_2n+1],通過:
〖(n+1)〗3=n3+3n^2+3n+1
〖(n+1)〗3-n3=3n^2+3n+1
〖n3-(n-1)〗3=3(〖n-1)〗^2+3(n-1)+1
⋯⋯33-23=3×2^2+3×2+1
23-13=3×1^2+3×1+1
求和得:
〖(n+1)〗3-1=3(12+22+32+⋯+n^2 )+3(1+2+3+⋯+n)+n
由於1+2+3+⋯+n=(n(n+1))/2
因此:n3+3n2+3n=3(12+22+32+⋯+n2 )+3 (n(n+1))/2+n
即:12+22+32+⋯+n2=(n(n+1)(2n+1))/6
10.10×10×10=1000
exercise 2.4
4.a.q(n)=q(n-1)+2×n-1
q(n-1)=q(n-2)+2×(n-1)-1
⋯⋯即:q(n)=1+3+5+⋯+2×n-1=n(1+2×n-1)/2=n^2
**:#include
using namespace std;
int qu(int n)
int main()
else
int main()
cout<<「最小的數為:」 }執行結果:該程式可以求列表最小值
通過temp值和陣列末尾的元素的比較,因此設次數為c(n),則c(n)=n-1。
第二章 遞迴演算法設計與分析
1.1.2遞迴應滿足的條件 1.1.3何時使用遞迴 直接遞迴 自己呼叫自己的遞迴 間接遞迴 a呼叫b,b呼叫a 如果乙個遞迴過程或遞迴函式中遞迴呼叫語句是最後一條執行語句,則稱這種遞迴呼叫為尾遞迴。例1.1 設計求n!n為正整數 的遞迴演算法int fun int n 這是乙個直接遞迴,又由於遞迴呼...
演算法設計與分析 第二章 遞推演算法
遞推法是一種重要的數學方法,在數學的各個領域中都有廣泛的運用,也是計算機用於數值計算的乙個重要演算法。這種演算法特點是 乙個問題的求解需一系列的計算,在已知條件和所求問題之間總存在著某種相互聯絡的關係,在計算時,如果可以找到前後過程之間的數量關係 即遞推式 那麼,從問題出發逐步推到已知條件,此種方法...
第二章 演算法基礎
引言 演算法導論 在本章將向我們介紹乙個演算法設計和分析框架,在後續的章節也將在這個框架的基礎上來分許演算法。名詞解釋 1 偽 偽 就是以最清晰 最簡潔的表示方法來說明演算法,而忽略資料抽象 模組性和錯誤處理的問題 2 迴圈不變式 每次迴圈從陣列a中取出第j個元素插入有序數列a 1 j 1 然後遞增...