演算法(algorithm):是對特定問題求解方法的一種描述,是指令的有限序列,其中每一條指令表示乙個或多個操作。
特性:
1.6.1演算法效率的度量演算法執行時間需通過依據該演算法編制的程式在計算機上執行所消耗的時間來度量。
方法通常有兩種:
1.6.2時間複雜度度量:
演算法中基本操作重複執行的次數是問題規模n的某個函式,其時間量度記作t(n)=o(f(n)),稱作演算法的漸近時間複雜度(asymptotic time complexity),簡稱時間複雜度。一般地,常用最深層迴圈內的語句中的原操作的執行頻率(重複執行的次數)來表示。
六種常用計算演算法時間的多項式:
當n取得很大時,指數時間演算法和多項式時間演算法在所需時間上非常懸殊。有的情況下,演算法中基本操作重複執行的次數還隨著問題的輸入資料集不同而不同。
快捷計算方法:
case 1:基本語句與n無關 o(1)
case 2:**原則 n/2 o(log2n)
case 3:單一迴圈,依賴n o(nlog2n)
case 4:雙迴圈,**原則 o(nlog2n)
case 5:雙迴圈 o(n^2)
常見時間複雜度
執行次數函式舉例
階非正式術語
10o(1)
常數階2n+4
o(n)
線性階3n^2+4n+1
o(n^2)
平方階5log2n+2
0(logn)
對數階2n+3nlog2n+10
o(nlogn)
nlog階
6n3+2n2+3n+4
o(n^3)
立方階2^n
o(2^n)
指數階(ps:log2n是以2為底數,nlog表示為n倍的log2n)
1.6.3演算法的空間分析
空間複雜度(space complexity);是指演算法編寫程式後,在計算機中執行時所需儲存空間大小的度量。記作:s(n)=o(f(n))n為問題的規模。
資料結構與演算法筆記 緒論
計算機的本質是計算,計算是尋找物件的規律,並從中找到技巧。計算的目標是高效,低耗。演算法就是借助一定的工具,在一定的規則下,以明確而機械的形式來進行的計算。演算法的主要特性 乙個好的程式不僅要考慮資料結構與演算法,還要考慮效率,即 資料結構 演算法 效率 程式 應用。演算法分析的兩個重要指標 定義 ...
資料結構與演算法學習筆記
演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...
演算法學習 資料結構2
1 資料結構概述 數結構是計算機中對資料的一種儲存和組織方式,同是也泛指相互之間存在一種或多種特定關係的資料的集合。2 資料結構中的基本概念 資料 data 資料是資訊的載體,其能夠被計算機識別 儲存和加工處理,是電腦程式加強的 原材料 資料元素 data element 資料元素是資料的基本單位,...