這部分主要目的是對於時間空間複雜度、演算法評價標準有乙個了解,以便於在後面的學習中可以對各種資料結構的效率有乙個客觀的評價標準 對比起來也更容易
代價可以分為兩種 時間代價和空間代價
時間代價主要是指演算法執行過程中所需的時間
空間代價指演算法所需要的儲存器資源
對於乙個演算法的評價應該可以客觀地展現演算法本身的效率 而與演算法執行的硬體條件、軟體環境無關
對於演算法的評價可以有最差、最好、平均三種角度來分析
比較演算法的方法有事後統計方法 和事前分析估計方法,事後統計就是找兩個演算法來實際跑一跑,統計出一些效能引數來比較演算法的開銷;事前分析估計方法也稱為漸進演算法分析,估算對於乙個問題的演算法當問題規模變大時所需的開銷情況
把執行演算法所需要的時間t寫為與輸入規模n相關的函式t(n)
常見時間複雜度:
當輸入規模趨於無窮大時 對演算法執行時間函式t(n)的漸進性態的估計,提供了對演算法資源開銷進行評估的簡單化的模型
對於非負函式t(n) 若存在兩個正常數c和n0 n>n0時有t(n)≤cf(n),則稱t(n)當n充分大時有上限 且f(n)是他的乙個上限,記為t(n)∈o(f(n))
也就是說 當輸入問題規模趨於無限大的時候 演算法執行時間是可以小於等於乙個關於n的函式值
例 某一演算法平均情況下 t(n)=c1n2+c2n, c1、 c2為正數。 當n>1時, c1n2+c2n≤c1n2+c2n2≤(c1+c2)n2。 因此取c=c1+c2, n0=1, 有t(n)≤cn2。 根據定義, t(n)在o (n2)中。
對於非負函式t(n), 若存在兩個正常數c和n0, 使得當n>n0時有t(n)≥ cg(n),則稱函式t(n)當n充分大時有下限, 且g(n)是它的乙個下限, 記為t(n)∈ ω (g(n)), 或t(n)在集合ω (g(n))中。 也稱t(n)的階不低於g(n)的階
當輸入問題規模趨於無限大的時候 演算法執行時間是大於等於乙個關於n的函式值
例 假定t(n)=c1n2+c2n (c1,c2>0), 則有c1n2+c2n≥ c1n2 (n>1)因此, 取c=c1, n0=1, 有t(n)≥ cn2, 根據定義, t(n)在ω (n2)中
上下限相等時可以使用θ表示法
正確性 必須完成期望的功能, 將輸入正確地轉換為輸出
具體步驟 演算法應由一系列具體步驟組成 每一步對於人或機器應可讀, 且在有限時間內執行完畢
確定性 無二義性
有限性 由有限步組成
可終止性
資料結構複習之 資料結構和演算法概念
資料結構就像是乙個催化劑,如果沒有原料是無用的,單是有了演算法就能幫演算法更快的實現任務 資料結構 是指相互之間存在一種或多種特定關係的資料元素 的集合,簡單地說是資料之間的各種關係的集合。程式設計 資料結構 演算法 解釋 如果要寫乙個程式,需要選擇乙個良好的資料結構,加上良好的解決問題的演算法 資...
複習資料結構及演算法
複習資料結構與演算法的一些知識收藏 十大經典排序演算法 時間和空間複雜度 演算法 algorithm 是指用來運算元據 解決程式問題的一組方法。對於同乙個問題,使用不同的演算法,也許最終得到的結果是一樣的,但在過程中消耗的資源和時間卻會有很大的區別。那麼我們應該如何去衡量不同演算法之間的優劣呢?主要...
資料結構與演算法分析 之 資料結構和演算法概述
官方解釋 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。大白話 資料結構就是把資料元素按照一定的關係組織起來的集合,用來組織和儲存資料 傳統上,我們可以把資料結構分為邏輯結構和物理結構兩大類。邏輯結構分類 邏輯結構是從具體問題中抽象出來的模型,是抽...