01 資料結構與演算法基礎 學習資料整理

2022-09-05 09:45:13 字數 2161 閱讀 8690

1.時間複雜度

演算法的時間複雜度是指執行演算法所需要的時間。一般來說,計算機演算法是問題規模n 的函式f(n),演算法的時間複雜度也因此記做。

t(n)=ο(f(n))

因此,問題的規模n 越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間複雜度

2.空間複雜度

演算法的空間複雜度是指演算法需要消耗的記憶體空間。其計算和表示方法與時間複雜度類似,一般都用複雜度的漸近性來表示。同時間複雜度相比,空間複雜度的分析要簡單得多。

(s(n)=o(f(n)))

1>演算法本身占用的空間

2>演算法的執行時占用的空間

3>演算法執行時臨時占用的空間

3.正確性

演算法的正確性是評價乙個演算法優劣的最重要的標準。

4.可讀性

演算法的可讀性是指乙個演算法可供人們閱讀的容易程度。

5.健壯性

健壯性是指乙個演算法對不合理資料輸入的反應能力和處理能力,也成為容錯性。

資料結構可以用邏輯結構劃分和物理儲存結構劃分,邏輯結構就是反應資料之間的邏輯關係,而物理結構就是反應資料在計算機中的儲存安排.比如說線性結構.非線性結構就是以邏輯結構劃分的,而物理儲存結構就可以分為:順序.鏈式.和雜湊結構.
1.集合

2.線性結構

3.樹結構

4.圖結構或網狀結構

1.順序儲存結構

2.鏈式儲存結構

3.索引儲存結構

4.雜湊儲存結構

乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。

一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f(n),因此,演算法的時間複雜度記做:t(n)=o(f(n))。隨著模組n的增大,演算法執行的時間的增長率和f(n)的增長率成正比,所以f(n)越小,演算法的時間複雜度越低,演算法的效率越高。在計算時間複雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出t(n)的同數量級(它的同數量級有以下:1,log2n ,n ,nlog2n ,

n的平方,n的三次方,2的n次方,n!),找出後,f(n)=該數量級,若t(n)/f(n)求極限可得到一常數c,則時間複雜度t(n)=o(f(n))。

按數量級遞增排列,常見的時間複雜度有:常數階o(1),對數階o(log2n),線性階o(n),線性對數階o(nlog2n),平方階o(n^2),立方階o(n^3),...,k次方階o(n^k), 指數階o(2^n) 。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。

舉幾個具體的例子:

1.for i:=1 to 100 do for j:=1 to 100 do s[i,j]:=0;

執行次數100*100次,時間複雜度o(1)

2.for i:=1 to n do for j:=1 to 200 do s[i,j]:=0;

執行次數n*200次,時間複雜度o(n)

2.for i:=1 to n do for j:=1 to n div 2 do s[i,j]:=0;

執行次數n*n/2次,時間複雜度o(n^2)

3.for i:=1 to n do for j:=1 to n-1 do for k:=1 to n-2 do s[i,j,k]:=0;

執行次數n*(n-1)*(n-2)次,時間複雜度o(n^3)

4.for i:=1 to n do

begin

for j:=1 to n do s[i,j,0]:=0;

for j:=1 to n do for k:=1 to n do s[i,j,k]:=1;

end;

執行次數n*(n+n*n)次,時間複雜度o(n^3)

一般情況下是不考慮空間複雜度的,空間複雜度並不是指所有的資料所占用的空間,而是使用的輔助空間的大小,比如兩個矩陣的運算,在中間設定了乙個中間矩陣來儲存一些資料,這些空間叫做空間複雜度。空間複雜度的運算非常麻煩,一般簡單的演算法空間複雜度都是

o(1)

,比較複雜的會告知空間複雜度,記住就好了。

資料結構與演算法 01 如何學習資料結構與演算法

過於學術的概念定義比較抽象,難以理解。我們從廣義和狹義兩個層面,來理解資料結構與演算法這兩個概念。從廣義上講,資料結構就是指一組資料的儲存結構 怎麼放 演算法就是運算元據的一組方法 怎麼用 我們以圖書館的場景為例來進一步理解 圖書館書籍量十分巨大,首先要分類設定閱覽室,譬如社科類 科技類 報刊類等。...

資料結構 資料結構與演算法01

1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...

資料結構 01 資料與資料結構

1.資料data 資料是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。2.資料元素data elements 資料元素是組成資料的 有一定意義的基本單位,在計算機中通常作為整體進行處理。3.資料物件data object 資料物件是性質相同的資料元素的...