資料結構—概述
由於參加自學考試,針對資料結構進行了專門的複習,從中不僅僅是獲得了知識,更多的是將理論知識轉換為實際應用,從而解決我們遇到的各種問題。 資料結構(Data Structure)是將資料進行組織利用演算法實現並在計算機記憶體儲的方式,為什麼這麼說呢?那咱們先看一張圖。
導圖
此圖是對整個資料結構總結的一個概括圖。接下來的學習過程,每小節都會單獨介紹。
概念介紹
1. 資料:所有被計算機儲存、處理的物件。比如,數值,字串,表格,影象,聲音等等。
2. 資料元素:資料的基本單位,簡稱為元素。
3. 資料項
:組成資料元素,又稱為欄位或域。是資料的不可分割的最小標識單位。4.邏輯結構:資料元素之間的邏輯關係。四類基本邏輯結構包括集合,線性結構,樹形結構,圖結構。
5.儲存結構:邏輯結構在計算機中的儲存實現。儲存方式主要有順序儲存方式,鏈式儲存方式,索引儲存方式和雜湊儲存方式。
6.運算:對邏輯結構的加工。基本運算包括有建立、查詢、讀取、插入和刪除。
7.演算法分析:①正確性;②易讀性;③健壯性;④時空性(時間複雜度和空間複雜度)。
實戰練習
int num1, num2; for(int i=0; i<n; i++){ num1 += 1; for(int j=1; j<=n; j*=2){ num2 += num1; } }
計算一下以上程式碼的時間複雜度? |
首先,看一下時間複雜的分析步驟:
1. 計算出基本操作的執行次數T(n)
基本操作即演算法中的每條語句(以分號作為分割),語句的執行次數也叫做語句的頻度。在做演算法分析時,一般預設為考慮最壞的情況。
2. 計算出T(n)的數量級
求T(n)的數量級,只要將T(n)進行如下一些操作:
忽略常量、低次冪和最高次冪的係數
令f(n)=T(n)的數量級。
3. 用大O來表示時間複雜度
當n趨近於無窮大時,如果lim(T(n)/f(n))的值為不等於0的常數,則稱f(n)是T(n)的同數量級函式。記作T(n)=O(f(n))。
1.語句int num1, num2;的頻度為1;
語句i=0;的頻度為1;
語句i< n; i++; num1+=1; j=1; 的頻度為n;
語句j<=n; j* =2; num2+=num1;的頻度為n*log2n;
T(n) = 2 + 4n + 3n*log2n
2.
忽略掉T(n)中的常量、低次冪和最高次冪的係數
f(n) = n*log2n
3.
lim(T(n)/f(n)) = (2+4n+3n* log2n) / (n* log2n)
= 2* (1/n)* (1/log2n) + 4* (1/log2n) + 3
當n趨向於無窮大,1/n趨向於0,1/log2n趨向於0
所以極限等於3。
T(n) = O(n*log2n)
總結
概述部分就先寫到這裡,首先讓大家都對這一部分有一個整體的認識,從整體到區域性,再從部分到整體,知識的學習過程就是一個不斷反覆迴圈的過程,不斷的總結。