資料結構第1講

2021-06-14 17:51:47 字數 2690 閱讀 7919

1.1 資料結構討論的範疇

資料結構+演算法=程式設計。

例如:數值計算的程式設計問題

結構靜力分析計算

——線性代數方程組

非數值計算發的程式設計問題

例1:求一組整數中的最大值?

例2:計算機對弈(演算法與模型)

例3:足協的資料庫管理

演算法:需要管理的專案?如何管理?使用者介面?

概況地說,資料結構描述現實世界實體的數學模型(非數值計算)的程式設計問題及其在計算機上的操作與實現。

1.2基本概念

一、資料與資料結構

資料:所有能被輸入到計算機中,且被計算機處理的符號的集合計算機操作的物件的總稱,是計算機處理的資訊的某種特定的符號表示形式。

資料元素:資料中的乙個「個體」,資料結構中討論的基本單位。。

資料項:資料結構中討論的最小單位,資料元素是資料項的集合。

例如:運動員(資料元素)

資料結構:帶結構的資料元素的集合。

例如:乙個含12位數的的十進位制數可以用三個4位的十進位制數表示。存在「次序」關係。

又如,2行3列的二維陣列

資料的邏輯結構可歸結為以下四類:

線性結構

樹形結構

圖狀結構

集合結構

資料結構的形式定義為:資料結構是乙個二元組。強調資料之間的邏輯關係。

資料的儲存結構:邏輯結構在儲存器中的映像

資料元素的映像方法:用二進位制位的位串表示資料元素

關係的映像方法:(表示《x,y》的方法)

順序映像:以儲存位置的相鄰表示後繼關係(y的儲存位置和x的儲存位置之間差乙個常量c)而c是乙個隱含值,整個儲存結構中只含資料元素本身的資訊。

鏈式映像:以附加資訊(指標)表示後繼關係(需要用乙個和x在一起的附加資訊指示y的儲存位置)

在不同的程式設計環境中,儲存結構可有不同的描述方法。

二、資料型別

在用高階程式語言編寫的程式中,必須對程式出現的每個變數、常量或表示式,明確說明它們所屬的資料型別。

資料型別是乙個值的集合和定義在此集合上的操作的總稱。

三、抽象資料型別

是指乙個數學模型以及定義在此數學模型上的一組操作。

兩個重要特徵:資料抽象/用adt描述程式處理的實體時,強調的是其本質的特徵。

資料封裝

描述方法:抽象資料型別可用(d,s,p)三元組來表示

其中,d是資料物件,s是d上的關係集,p是對d的基本操作集。

需要通過固有資料型別來實現。

1.3演算法和演算法的衡量

一、演算法

演算法是為了解決某類問題而規定的乙個有限長的操作序列。必須滿足以下五個重要特性:

1.有窮性——對於任何一組合法輸入值,在執行有窮步驟之後一定能結束,即:演算法中的每個步驟在有限時間內能結束;

2.確定性——對於每種情況下所應執行的操作,在演算法中都有確切的規定,使演算法的執行者或閱讀者都能明確地理解;

3.可行性——演算法中的所有操作都必須足夠基本,都可以通過已實現的基本操作運算有限次實現之;

4.輸入——作為演算法加工物件的量值,通常體現為演算法中的一組變數。有些輸入需要在演算法執行過程中輸入,而有的演算法表面上可以沒有輸入,實際上已被嵌入演算法中;

5.輸出——它是一組與「輸入」與確定關係的量值,是演算法進行資訊加工後得到的結果,這種確定關係即為演算法的功能。

二、演算法設計的原則

1.正確性

首先,演算法應當滿足以特定的「規格說明」方式給出的需求。

其次,對演算法是否「正確」的理解可以有以下四個層次:

a.程式中不含語法錯誤;

b.程式對於幾組輸入資料能夠得出滿足要求的結果;

c.對於精心選擇的、典型、苛刻且帶有刁難性的幾組輸入資料能夠得出滿足要求的結果;

d.程式對於一切合法的輸入資料都能得出滿足要求的結果;

2.可讀性

演算法主要是為了人的閱讀與交流,其次才是機器執行。可讀性好有助於人對演算法的理解;晦澀難讀的程式易於隱藏較多錯誤,難以除錯和修改。

3.健壯性

當輸入的資料非法時,演算法應當恰當地作出放映或進行相應處理,而不是產生莫名其妙的輸出結果。

4.高效率與低儲存量需求

通常,效率指的是演算法執行時間;儲存量指演算法執行過程中所需要的最大儲存空間。

三、演算法效率的衡量方法和準則

1.事後統計法

缺點:1.必須執行程式;2.其他因素掩蓋演算法本質

2.事前分析估算法

1.演算法選用的策略

2.問題的規模

3.編寫程式的語音

4.編譯程式產生的機器**的質量

5.計算機執行指令的速度

假如,隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,則可記作:t(n)=o(f(n)),稱為t(n)為演算法的漸近時間複雜度。

如何估算?

演算法 = 控制結構 + 原操作(固有資料型別的操作)

演算法的執行時間=原操作(i)的執行次數之和*原操作(i)的執行時間

從演算法中選取一種對於所研究的問題來說是基本操作的原操作,以該基本操作在演算法中重複執行的次數作為演算法執行時間的衡量準則。

語句的頻度指的是該語句重複執行的次數。

四、演算法的儲存空間需求

s(n)=o(g(n))

包括:1.輸入資料;2.程式本身(可不考慮);3.輔助變數。

學習要點:

1.熟悉各名詞、術語的含義,掌握基本概念。

2.理解演算法五個要素的確切含義。

3.掌握計算語句頻度和估算演算法時間複雜度的方法。

資料結構 第1講 基礎知識

資料結構 相互之間存在一種或多種特定關係的資料元素的集合 演算法 對結構中的資料進行各種處理 應用方面 現實世界資料儲存 程式設計師的工具 1 資料結構 優點 缺點 2 陣列 使用方便,查詢效率 比煉表高,記憶體為一連續的區域 大小固定,不適合動態儲存,不方便動態新增 3 有序陣列 比無序的陣列查詢...

資料結構 第5講 順序棧

資料結構 第5講 順序棧 小張終於攢錢買了車,可是他家住在胡同的盡頭,胡同很窄,只能通過一輛車,而且是死胡同,每天小張都為停車發愁,回家早了停在裡面,早上上班就要讓所有的人挪車,先讓胡同口那輛出去,然後挨著一輛一輛出去,小張才能去上班。沒辦法,小張下班也不敢早回家了,等天黑了別的車都停進去了,再回去...

資料結構 第7講 迴圈佇列

資料結構 第7講 迴圈佇列 過了一段時間,小張再也受不了這種 起早貪黑 的有車生活。為了解決胡同停車問題,小張跑了無數次居委會,終於將擋在胡同口的建築清除,這樣住在胡同盡頭的小張,就可以早早回家停在家門口,每天第乙個開車上班去了。現在胡同打通了,但仍然很窄,只能通過一輛車,但是可以從一端進,另一端出...