1. 程式人生 > >資料結構1:認識資料結構與演算法

資料結構1:認識資料結構與演算法

程式 + 文件 = 軟體

演算法 + 資料結構 = 程式

資料結構與演算法的理論基礎離散數學中的圖論、集合論和關係論等。

資料結構課程的內容來源於圖論、作業系統、編譯系統、編碼理論及檢索與排序技術等。

1.什麼是資料結構?

非數值型程式設計中資料的組織方式及其處理的演算法

資料結構的三個方面

(1)資料的邏輯結構

邏輯結是式資料的組織形式,與機器無關。

4種基本的邏輯結構:

集合:資料元素除了“屬於同一集合”的關係外,沒有其他關係。線性結構:資料元素之間存在一對一的關係。如:線性表,棧,佇列層次結構:資料元素之間存在一對多的關係。如:樹網狀結構:資料元素之間存在若干個多對多關係。如:圖

(2)資料的物理結構(儲存結構)

指資料在儲存器種的存放方式,包括資料元素的表示和關係的表示。

4種基本的儲存結構:

順序儲存:將資料結構中各元素按照其邏輯順序存放於一片連續的儲存空間中。如C語言的一維陣列。

優點:隨機訪問快(可以直接計算資料的地址)
缺點:插入、刪除效率低,不利於動態增長

鏈式儲存:資料結構中各元素可以存放到儲存器的不同地方,資料元素之間以指標(地址)連結。

缺點:隨機訪問慢
優點:便於插入、刪除和動態增長

索引儲存:

在儲存資料的同時,建立一個附加的索引表,即索引儲存結構 = 資料 + 索引表。索引表存放各資料元素的地址

索引表的組織方式:
順序儲存:索引表佔用連續空間
鏈式儲存
索引儲存:多級索引(多重索引)
 例如,二級索引:將一個大檔案的所有索引表(二級索引)的地址放在另一個索引表(一級索引)中
 此外,還有三級索引等。

雜湊儲存:根據資料元素的特殊欄位(稱為關鍵字key),計算資料元素的存放地址,然後資料元素按地址存放,所得到的儲存結構為雜湊儲存結構(Hash結構)

(3)資料的操作(演算法實現)

基本的資料操作:增刪改查
查詢:在資料結構中尋找滿足某條件的資料元素的位置或值。
插入:在資料結構中新增新的資料元素。
刪除:刪去資料結構中指定的資料元素。
更新:改變資料結構中某個資料元素一個或多個數據項的值。

排序:重新安排資料元素之間的邏輯順序,使之按(某個資料項的)值由小(大)到大(小)的次序排列

2.什麼是演算法?

演算法是一個有窮規則(或語句、指令)的有序集合。它確定瞭解決某一問題的一個操作序列。對於問題的初始輸入,通過演算法有限步的執行,產生一個或多個輸出。
 簡單地說,演算法是指解決問題的由一系列具體步驟組成的方法或過程。
對特定問題求解步驟的一種描述

是一有限長的操作序列       

演算法的性質

1)有窮性—— 演算法執行的步驟是有限的,就是說是可終止的;

2)    確定性—— 每個計算步驟無二義性;

3)    可行性—— 每個計算步驟能夠在有限的時間內完成;

4)   輸入—— 演算法有一個或多個輸入;

5)    輸出—— 演算法有一個或多個輸出。