1. 程式人生 > >資料結構—概述

資料結構—概述

  由於參加自學考試,針對資料結構進行了專門的複習,從中不僅僅是獲得了知識,更多的是將理論知識轉換為實際應用,從而解決我們遇到的各種問題。 資料結構(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)

總結

  概述部分就先寫到這裡,首先讓大家都對這一部分有一個整體的認識,從整體到區域性,再從部分到整體,知識的學習過程就是一個不斷反覆迴圈的過程,不斷的總結。