換底公式:\(\log_ab=\frac\)
證明:設\(z=\log_ab, x=\log_cb,y=\log_ca\),則\(a^z=b,c^x=b,c^y=a =>^z=c^x=>yz=x,\)所以\(z=\frac\),即\(\log_ab=\frac\)
模同餘定理
(1)兩個數a與b,如果他們除以c後的餘數相同,則稱a和b模同餘。記為\(a\equiv b(mod n)\)
(2)模同餘的條件也可記為:a與b的差整除c
級數公式
(1)\(\sum\limits_^2^i=2^-1\)
(2)\(\sum\limits_^a^i=\frac-1}\)
(3)當公式2中,\(0,則\(\sum\limits_^a^i\leq \frac\)
相對增長率描述了2個函式之間的關係,是函式間的相對級別
函式關係的4個定理:
(1)定理1:有2個函式\(t(n)\)和\(f(n)\),若存在正數c和\(n_0\),使得當\(n\geq n_0\)時,\(t(n) \leq cf(n)\),則稱\(t(n)=o(f(n))\)
(2)定理2:有2個函式\(t(n)\)和\(f(n)\),若存在正數c和\(n_0\),使得當\(n\geq n_0\)時,\(t(n) \geq cf(n)\),則稱\(t(n)=\omega(f(n))\)
(3)定理3:若兩個函式\(t(n)\)和\(f(n)\)之間的關係是\(t(n)=\omega(f(n))\)或\(t(n)=o(f(n))\),則稱\(t(n)=\theta(f(n))\)
(4)定理4:有2個函式\(t(n)\)和\(f(n)\),若存在正數c和\(n_0\),使得當\(n> n_0\)時,\(t(n),則稱\(t(n)=o(f(n))\)
要證明\(t(n)=o(f(n))\),通常不需要證明過程,而是利用一些已知的結果。當\(t(n)=o(f(n))\)時,可以保證\(t(n)\)在以不快於\(f(n)\)的速率增長
我們可以通過計算極限\(\lim\limits_\frac\)來確定2個函式的相對增長率
(3)if/else語句:if(condition)else 執行時間為condition判斷時間 + s1/s2語句執行的時間
(4)遞迴函式的時間複雜度
演算法導論 一 演算法基礎
迴圈不變式主要用來幫助我們理解程式的正確性。迴圈不變式的三條性質 初始化 迴圈的第一次迭代之前,它為真。保持 如果迴圈的某次迭代之前它為真,那麼下次迭代之前它仍為真。終止 再迴圈終止時,可驗證演算法的正確性。偽 的重要性在於它可以簡潔地表達出演算法的本質 縮排代表塊結構 採用縮排代表塊結構可以大大提...
(一)演算法基礎 排序演算法
作為演算法的入門,排序演算法再合適不過了,在這裡我主要介紹四種排序演算法 插入排序 歸併排序 快速排序以及希爾排序。不過在介紹這些演算法之前,我們先來做一些準備工作。一 演算法測試函式 在實現乙個演算法後,必然要對這個演算法進行除錯和分析,這裡我寫了一些函式用於演算法的測試。隨機數組生成函式 int...
基礎演算法之一 演算法概論
常見的基礎演算法有 分治 動態規劃 貪心 回溯與分支限界等,常用的技巧方法有 遞迴,遞推,空間時間互換,快取,重疊子問題,記憶化。演算法的本質是 狀態,狀態的轉移,問題的定義,以及子問題的定義。分治演算法思想 分而治之,大事化小小事化了。一句話 化繁為簡。例子 快排。動態規劃思想 由前乙個或者幾個狀...