數據的邏輯結構與存儲結構的基本概念(數據結構鞏固一)

數據的邏輯結構與存儲結構的基本概念

邏輯結構分爲四種類型

  • 集合結構:元素同屬一個集合,元素之間沒有什麼關係。
  • 線性結構: 典型的有順序表,鏈表,棧和隊列。 元素之間是一對一關係。
  • 樹形結構:二叉樹,元素之間是一對多關係
  • 圖形結構:有向圖與無向圖。元素之間是多對多的關係。

物理結構(又稱存儲結構)分爲兩類

  •   順序結構:元素在連續的存儲單元中,物理順序與邏輯順序是一致的,比如數組。優點是訪問速度快,缺點是插入和刪除操作耗時久。
  •   鏈式結構:元素可以在不連續的存儲單元中,通過指針指向前驅節點或者後驅節點,有點是插入和刪除都很快。

算法的定義、基本性質以及算法分析的基本概念,包括採用大O形式表示時間複雜度和空間複雜度

    • 算法的定義:是爲了求解問題給出的有限指令序列,每條指令表示一個或多個操作。
    • 算法的基本性質:
      • 輸入:一個算法有0個或多個輸入,這些輸入取自某個特定對象的集合。
      • 輸出:一個算法有一個或多個輸出,這些輸出是同輸入具有某種特定關係的量
      • 確定性:算法中每一條指令必須有確切的含義,不具有二義性
      • 可行性:算法中描述的操作都可以用已經實現的運算執行有限次來實現。
      • 有窮性:一個算法必須能夠在執行又窮步驟後結束,並且每一步都能在又窮時間內完成。

算法分析

      :算法運行所需要的時間稱爲時間複雜性;算法運行所需要的輔助空間稱爲空間複雜性
      • 事前估計法:時間按複雜度估計。  抽象過程如下:算法運行時間=每條語句執行時間之和-》每條語句的執行次數之和-》基本語句的執行次數-》基本語句執行次數的數量級-》大O號表示。常見的時間複雜度如下Ο(1)<Ο(log₂n)<Ο(n)<Ο(nlog₂n)<Ο(n²)<Ο(n³)<…<Ο(2ⁿ)<Ο(n!)
描述 增長的數量級 典型代碼 說明 舉例
常數級別 Ο(1) a=b+c 普通語句 將兩個數相加
對數級別 Ο(log₂n) 二分查找 二分查找 二分查找
線性級別 Ο(n)

for(int i=0;i<N;i++){

}

循環 找出最大元素
線性對數級別 Ο(nlog₂n)

 

分治 歸併排序
平方級別 Ο(n²)

for(int i=0;i<N;i++){

 for(int j=0;j<N;j++){

}

}

雙層循環 檢查所有元素對
立方級別 Ο(n³) 代碼省略 三層循環 檢查所有三元組
指數級別 Ο(2ⁿ)   窮舉查找 檢查所有子集

 

    • 事後統計法:程序運行測試。 比如在調用某個方法的前後打印當前時間,以此來判斷該方法執行耗時,缺點是需要編寫特定程序,且硬件環境影響測試結果(比如服務器與pc機器性能不同,同樣的算法在這2者之間運行的時間是不一樣的)

 

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