DS 第一章 初識資料結構

2021-09-13 02:43:47 字數 1640 閱讀 9017

資料結構(data structure)是計算機儲存、組織資料的方式,指之間相互存在一種或特定關係的資料元素的集合。

演算法是解決一類問題的一系列計算步驟。

筆試,面試必備。實際專案開發提供思想和思路,程式設計師的內功

我們在實現乙個演算法之後應該如何來計算或者測量這個演算法的優劣呢?這就要考慮到依靠演算法的效率。效率分為時間效率和空間效率,但是我們該如何衡量這兩大效率呢?因為每個計算機的效能都不一樣,因此我們不能依靠在計算機上執行測試時間長短來計算效率,我們總不能把全世界的演算法都放到同一臺計算機上來進行測試。

因此我們為了更好的更方便的測試乙個演算法的效率就依靠數學計算來進行測量,由此誕生了時間複雜度和空間複雜度。

時間複雜度在電腦科學中是乙個數學函式,他基本代表了乙個演算法執行基本操作的次數。

void func1(int n)

}for (int k = 0; k < 2 * n ; ++ k)

int m = 10;

while (m--)

printf("%d\n", count);

}

像以上這這段**我們可以用乙個函式f(n)來計算其一次的執行次數,可得到f(n) = n ^ 2 + 2 * n + 10,但是這樣表示過於複雜,也不夠直觀,由此我們引入了大o漸進表示法(big o notation),以下是大o漸進表示法的推導法則:

1、用常數1取代執行時間中的所有加法常數。

2、在修改後的執行次數函式中,只保留最高端項。

3、如果最高端項存在且不是1,則去除與這個專案相乘的常數。得到的結果就是大o階。

有了這個方法我們可以將以上的f(n)表示 為o(f(n)) = n ^ 2。對於這個階級我們稱之為平方階,其時間效率是十分底下的,也是最為常見的。我們往往在使用了兩個迴圈的時候就會出現平方階。以下還有幾個比較常見的階級。

1、o(1):常數階。這個階級是效率最為高效的,但也是可遇而不可求的。

2、o(logn):對數階。對數階是效率次於常數階的也是十分高效的階級,也是我們平時所追求的演算法的極致效率。

3、o(n):線性階。線性階也是效率 十分高效的了,並且也是十分常見的,同樣的如果我們的演算法不能達到對數階那麼也盡量應該達到線性階

4、o(n ^ 2):平方階的效率比起以上的階級效率上就要低下一些,但是在實戰中並非所有的演算法都能夠達到前三大階級,因此如果能達到平方階我們則也可以稱這個演算法是好的,至少是有效的。

5、o(2 ^ n):指數階,這個階級效率 十分低下的效率,占用的時間增長十分的快,如果n的數值較小我們還是可以計算出結果的,但是n一旦稍微大一些,我們計算的時間往往過於漫長,因此一旦出現指數階的演算法我們是並不能將其投入使用的,這個演算法也不能算是有效的。

空間複雜度與時間複雜度類似,也採用大o漸進表示法,往往先計算出佔單位空間的大小表示式,再進行化簡表示。相比空間複雜度我們往往更加關注於時間複雜度,因為時間效率往往是優先的。有的情況下我們不得不做出捨棄空間減少時間的決策,同樣的也會做出捨棄時間減少空間的決策,這都要根據具體場景來進行決定。

資料結構第一章

1.程式設計的實質 資料表示和資料處理。資料表示的核心是資料結構,資料處理的核心是演算法。資料結構 演算法 程式 2.資料是資訊的載體,在電腦科學中是指所以所有能 輸入到計算機中並能被識別電腦程式和處理的符號集合。資料的分類 一是整體,實數等數值資料 二是文字,聲音,圖形和影象等非數值資料。資料元素...

資料結構第一章

資料結構第一章 1.1廣播方式傳送檔案 傳送機傳送一次,所有都可接收。優 程式設計容易 傳送速度快 卻 容易丟包 1.2單播方式傳送 一次乙個 1.3改進方式 多級單播傳輸 類傳銷方式 順序儲存 陣列 鏈式 鍊錶 雜湊儲存 資料元素的儲存位置由值確定。資料元素之間的關係通過指標表達。查詢 如果i 某...

資料結構第一章

1.1 計算 計算才是最終的目標 繩索計算器 尺規計算器 通用步驟,給外面的一點做平行線 1.a4 演算法 a5 有窮性 u運算後加到序列中 因為64之後,一直除2都可以.演算法必須是有窮的,但是27這個,是無窮的,序列 是有窮的 但是也是很多 而42只有8個序列 好演算法有人說好演算法是 最重要的...