數據結構與算法概念和術語

程序設計 = 數據結構 + 算法

數據結構

數據結構:是相互之間存在一種或多種特定關係的數據元素的集合。
基本的概念和術語:

  1. 數據:描述客觀事物的符號,是計算機可以操作的對象,能被計算機識別,並輸入給計算機處理的符號集合。
  2. 數據元素:是組成數據的,有一定意義的基本單位,在計算機中通常作爲整體處理,也被稱爲記錄。
  3. 數據項:一個數據元素可以由若干個數據項組成。數據項是數據不可分割的最小單位。
  4. 數據對象:是性質相同的數據元素的集合,是數據的子集。

我自己的理解是,如果數據對象是一個類的話,那麼數據元素就是類new出來的對象,數據項就是類的屬性。

數據結構的分類

  1. 邏輯結構:是指數據對象中數據元素之間的相互關係。
    1. 集合結構:集合結構中的元素數據出了同屬於一個集合外,沒有其他關係。
    2. 線性結構:數據元素一對一的關係
    3. 樹形結構:數據元素一對多的關係
    4. 圖形結構:數據元素多對多的關係
  2. 存儲結構:是指數據的邏輯結構在計算機上的存儲。
    1. 順序結構:是將數據元素存放在連續的地址單元中,邏輯關係與物理關係一致。
    2. 鏈式結構:是把數據元素存放在任意的地質單元中,可以連續,也可以不連續。不能反映邏輯關係。

算法

算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,並且每條指令表示是一個或多個操作


算法的特性:輸入、輸出、有窮性、確定性和可行性。
算法設計的要求:正確性,可讀性,健壯性,時間效率高,存儲量低。


時間複雜度

在執行算法分析時,語句總的執行次數T(n)是關於問題規模n的函數,分析T(n)和n的關係。算法的時間複雜度,記作:T(n) = O(f(n))。隨着問題規模n的增大,算法執行時間的增長率和f(n)的增長率相同,稱作算法的漸進時間複雜度,簡稱爲時間複雜度。

推導大O階方法

  1. 用常數1取代運行時間中的所有加法常數。
  2. 在修改後的運行次數函數中,只保留最高階項。
  3. 如果最高階項存在且不是1,去掉常數,保留最高階。

常見的算法複雜度

O(1)<O(logn)<O(n)<O(nlogn)<O(n^2 )<O(n^3 )<O(2^n) <O(n!)<O(n^n)

最壞情況和平均情況:

比如我們要在數組中查找一個數字,最好情況那就是一次找到,最壞情況是最後一次找到,平均情況是二者的平均數。

平均運行時間是最有意義的,因爲它是期望的運行時間。
但是一般在沒有特殊說明的情況下,時間複雜度都是隻最壞的時間複雜度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章