1. 程式人生 > >數據結構與算法:概述+思維導圖

數據結構與算法:概述+思維導圖

www. list HA 復雜 jpg 邏輯結構 -i 存儲器 線性結構

尊重原創 --> 原文鏈接 --> 侵權刪

還記得這個經典公式嗎? 程序=數據結構+算法 可見數據結構和算法對於程序的重要性。

一.數據結構的基本概念

數據結構定義

數據結構是一種存儲和組織數據的方式,以便於訪問和修改。數據結構包括數據的邏輯結構、數據的存儲結構以及數據的運算,即按照某種邏輯關系組織起來的一批數據,按一定的映射方式把它存放在計算機的存儲器中,並在這些數據上定義了一個運算的集合。

  • 數據的邏輯結構:反映數據元素之間的關系。有集合、線性結構、樹型結構、圖型結構。
  • 數據的存儲結構:邏輯結構在計算機中的存儲映象,是邏輯結構在計算機中的實現,它包括數據元素的表示和元素之間關系的表示。有順序存儲結構(數組)、鏈式存儲結構(鏈表)、索引存儲結構、散列存儲結構等。
  • 數據的運算:對數據施加的操作,通過算法描述。

二.算法的基本概念

算法定義

計算機求解一個問題所需的一系列步驟

算法的基本特性

  1. 輸入:一個算法有0個或者多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身給出了初始條件;
  2. 輸出:一個算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的算法是毫無意義的;
  3. 有窮性:算法必須能在執行有限個步驟之後終止;
  4. 確切性:算法的每一步驟必須有確切的定義;
  5. 可行性:算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成。

算法設計的要求:

  1. 正確性:設計的算法能滿足具體問題的需求,並且任何合法的輸入都會得出正確的輸出;
  2. 可讀性:是指算法被寫好之後,該算法理解的難易程度,一個算法可讀性的好壞十分重要。如果一個算法比較抽象且難以理解,那麽這個算法就不利於交流和推廣使用,對於修改、擴展、維護來說都十分不方便,因此,在追求高效的同時,也應是算法盡量簡明易懂。
  3. 健壯性:當輸入數據非法時,算法也會做出相應的判斷,而不會因為輸入的錯誤而造成癱瘓。
  4. 時間效率高(時間復雜度)和需要的存儲空間少(空間復雜度)

時間復雜度:

程序大概的執行次數(不是執行時間)。一般情況下,算法中基本操作重復執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得當n趨近於無窮大時,T(n)/f(n)的極限值為不等於零的常數,則稱f(n)是T(n)的同數量級函數。記作T(n)=O(f(n)),

O(f(n)) 為算法的漸進時間復雜度,簡稱時間復雜度

空間復雜度:

該算法所耗費的存儲空間,它也是問題規模n的函數。其是對一個算法在運行過程中臨時占用存儲空間大小的量度。一個算法在計算機存儲器上所占用的存儲空間,包括存儲算法本身所占用的存儲空間,算法的輸入輸出數據所占用的存儲空間和算法在運行過程中臨時占用的存儲空間這三個方面。

思維導圖:

技術分享圖片

技術分享圖片

技術分享圖片

後面兩個思維導圖,在博文上顯示不全, 下載到本地再看, 會比較好些

忘記這兩個思維導圖從哪裏搞到的了, 原創博主, 對不住了, 侵權刪

數據結構與算法:概述+思維導圖