天天看點

資料結構:初識(資料結構、算法與算法分析)

1、資料結構初識

(1)程式、資料結構與算法的關系

程式=資料結構+算法

(2)資料

概念:

  • 是能夠輸入到計算機的能夠被計算機處理的各種符号的集合
  • 資訊的載體
  • 對客觀事物的抽象化表示
  • 能夠被計算機識别、存儲和加工

例如:将使用者的資訊抽象為一張二維表,存儲到資料庫中

資料結構:初識(資料結構、算法與算法分析)

分類:

  • 數值型資料:整數、實數等,能夠進行數值運算
  • 非數值型資料:文字、圖像、圖檔、聲音等

(3)資料元素和資料項

資料元素:是資料的基本機關,在計算機中通常作為一個整體考慮和處理(例如:學生退學後删除某一學生的資訊),也稱為元素、記錄、結點、頂點

資料項:構成資料元素的不可分割的最小機關,例如:學生的學号

資料、資料元素、資料項的關系:

資料結構:初識(資料結構、算法與算法分析)

 整張資料表是使用者的資料,使用者的使用者名是資料項、每一個使用者的資訊是一個資料元素

(4)資料對象

是性質相同的資料元素的集合,是資料的一個子集

(5)資料結構

資料元素之間的關系

資料結構的内容:

  • 邏輯結構:資料元素之間的邏輯關系
  • 實體結構:資料元素及其關系在記憶體中的表示
  • 資料的運算和實作:對資料元素可以施加的操作以及這些操作在相應的存儲結構上的實作

邏輯結構的分類:

  • 線性結構:有且僅有一個開始結點和終端結點,并且所有的結點都最多隻有一個直接前驅和直接後繼,例如:線性表、棧、隊列、串
  • 非線性結構:一個結點有多個直接前驅和直接後繼,例如:樹、圖
資料結構:初識(資料結構、算法與算法分析)

存儲結構

  • 順序結構:用一組連續的存儲單元依次存儲資料元素
  • 鍊式結構:一組任意的存儲單元來存儲資料,資料之間的邏輯關系用指針來表示,如:連結清單
資料結構:初識(資料結構、算法與算法分析)

 (6)資料類型和抽象資料類型

資料類型規定了數值的取值範圍以及操作,是一組性質相同的值的集合以及定義在這個集合上的一組操作的總稱

抽象資料類型(ADT abstrace data type):一個數學模型以及在數學模型(邏輯結構)上的一組操作,不考慮在計算機内的具體存儲與運算的具體實作算法

三要素:

  • 資料對象:例如:定義複數的時候有實部和虛部
  • 資料關系:例如:x是實部,y是虛部
  • 資料操作:定義、銷毀、獲得實部、虛部等

2、算法與算法分析

(1)算法的描述

  • 自然語言:用自然語言描述算法的過程
  • 流程圖:傳統流程圖、NS流程圖

(2)算法和算法分析

  • 算法是解決問題的一種方法或一個過程,考慮如何将輸入轉換為輸出,一個問題可以有多個算法
  • 程式是用某一種語言對算法的具體實作

(3)資料結構和算法的關系

  • 資料結構是算法的基礎
  • 算法的操作對象是資料結構,在設計算法的時候要建構合适這種算法的資料結構
  • 資料結構設計主要是選擇資料的存儲方式(數組或連結清單),算法設計是在標明的資料結構上設計一個滿足要求的好的算法
  • 資料結構關注的是資料的邏輯結構、存儲結構、基本操作,而算法關注的是如何在資料結構的基礎上解決實際問題

(4)什麼是算法

算法是求解問題的一系列步驟,用來将輸入的資料轉換為輸出結果

(5)算法的重要特性

  • 有限性:執行有限步之後結束
  • 确定性:每一條指令無二義性
  • 可行性:每一條運算都能精确地執行
  • 輸入性:一個算法有零個或多個輸入
  • 輸出性:一個算法有一個或多個輸入

(6)算法設計的目标

  • 正确性:正确地執行預先規定的功能和性能要求
  • 可使用性(使用者友好性):可以很友善地使用
  • 可讀性:易于了解
  • 健壯性(魯棒性):提供異常處理,能夠對不合理的資料進行檢查
  • 高效率與低存儲:執行時間短的算法效率高,所需的最大存儲容量低的算法好

(7)算法時間效率的度量

  • 事後統計:不可取
  • 事前分析:一個算法的運作時間是指一個算法在計算機上運作所耗費的時間,大緻等于計算機執行一種簡單的操作(指派、比較等)所需的時間與執行這種簡單操作的次數的乘積。因為每一條語句的執行時間大緻相同,是以,可以隻計算語句的頻度(語句的次數)javascript:void(0)時間複雜度是由嵌套最深的語句頻度決定的

每個人都會有一段異常艱難的時光 。

生活的壓力 , 工作的失意 , 學業的壓力。

愛的惶惶不可終日。

挺過來的 ,人生就會豁然開朗。

挺不過來的 ,時間也會教你 ,怎麼與它們握手言和 ,是以不必害怕的。

——楊绛

繼續閱讀