第一章 緒論

2021-10-03 12:29:03 字數 1638 閱讀 4383

1.2.1 資料的邏輯結構

從概念上來講,乙個資料結構是由一組同類的資料元素依據某種聯絡組織起來的。資料元素之間的邏輯關係稱為資料的邏輯結構。

資料的邏輯結構有以下四種:

(1)集合結構:

元素之間的次序是任意的。元素之間除了「屬於同一集合」的聯絡外沒有其他的關係。由於集合結構的元素見沒有固有的關係,因此可以借助於其他結構來表示集合結構。

(2)線性結構:

資料元素構成乙個有序序列。其中,第乙個元素只有後繼沒有前驅,最後乙個元素只有前驅沒有後繼。除了第乙個和最後乙個元素外,其餘元素都有乙個前驅和乙個後繼。

(3)樹形結構:

除了乙個特殊的根元素外,每個元素有且僅有乙個前驅,後繼數目不限。根元素沒有前驅。樹形結構表示的是一種層次關係。

(4)圖形結構:

圖是最一般的邏輯結構,圖中的每個元素的前驅和後繼數目都不限。

1.2.2 資料結構的儲存實現

每個資料元素存放在乙個稱為結點的單元中。乙個結點通常是一種內建型別、記錄型別或類型別的物件。資料元素之間的關係通常有下列4種方式來儲存。

(1)順序實現:

所有的結點存放在一塊連續的儲存區域中,結點之間的邏輯關係可以通過結點的儲存位置來體現。在高階語言中,一塊連續的儲存空間通常可用乙個陣列來表示。因此,順序實現通常用乙個陣列來儲存,陣列元素的型別就是結點的型別,結點之間的關係通過陣列元素的下標來體現。

(2)鏈結實現:

結點可以分散地存放在儲存器的不同位置,結點之間的關係通過乙個或多個指標顯式地指出。因此,在鏈結儲存中,每個儲存結點包含兩個部分:資料元素部分和指標部分。資料元素部分儲存資料元素的值;指標部分儲存一組指標,每個指標指向乙個與本結點有邏輯關係的結點。

(3)雜湊儲存方式:

是專用於集合結構的資料存放方式。在雜湊儲存中,各個結點均勻地分布在一塊連續的儲存區域中,用乙個雜湊函式將資料元素和儲存位置聯絡起來。

(4)索引儲存方式:

所有的結點按照資料生成的次序連續存放。另外設定乙個索引區域表示結點之間的關係。

1.2.3 演算法分析

演算法分析確定演算法的效能隨處理的資料量變化的規律,是評價演算法優劣的依據。演算法分析通常從時間和空間兩個方面展開。演算法的時間效能稱為時間複雜度,空間效能稱為空間複雜度。前者指演算法包含的運算量,後者指演算法需要的儲存量。

空間複雜度的討論比較簡單,它關心的是除了被處理的資料所佔的空間之外所需的額外空間的大小。空間複雜度一般按最壞情況來分析。

在演算法分析中,時間效能通常用最好情況的時間複雜度、最壞情況的時間複雜度以及平均情況的時間複雜度來描述。

演算法的運算量可以用乙個時間函式來刻畫。演算法的執行時間函式可能是乙個很複雜的函式,解決同一問題的不同演算法會有不同的執行時間函式。時間效能主要考慮的是當處理的資料量很大時執行時間隨問題規模的變化規律。

在演算法分析中,不考慮具體的時間函式,只考慮時間函式的數量級。這種方法稱為漸進表示法。最常見的漸進表示法是大o表示法。

常用的時間複雜度函式

函式名稱1常量

logn對數n

線性nlogn

nlogn

n^2平方

n^3立方

2^n指數

n!指數

n^n指數

時間複雜度函式為多項式函式的演算法稱為多項式時間演算法,時間複雜度函式為指數函式的演算法稱為指數時間演算法。多項式時間的演算法要比指數時間的演算法好。為計算

第一章 緒論

1.16 void print descending int x,int y,int z 按從大到小順序輸出三個數 print descending 1.17 status fib int k,int m,int f 求k階斐波那契序列的第m項的值f gender char schoolname 校...

第一章 緒論

本 題目源於粵電集團科研專案 沙角a電廠優化排程輔助決策系統 沙角a電廠電網排程已由原來對互不聯絡的單機排程方式發展為對全廠整體總負荷的經濟排程方式,現有五颱發電機組 其中210mw機組三颱,300mw機組二台 的主要工作如下 1.實時資料採集及預處理 機組效能計算和能損分析建立在準確獲取現場資料的...

第一章 緒論

1.1 資料結構在程式設計中的作用 a 問題 資料模型 基本思路 想法 資料表示 資料處理 演算法 程式語言 程式設計環境 設計方法 程式 b 著名公式 資料結構 演算法 程式 1.2 本書討論的主要內容 a 問題一般分為 數值問題 非數值問題 a 數值問題抽象出的資料模型通常是數學方程 b 非數值...