1.1資料結構和演算法是構成程式的兩個重要的組成部分。
1.2計算機能夠求解的問題一般可以分為數值問題和非數值問題。數值問題抽象出的資料模型通常是數學方程,非數值問題抽象出的數學模型通常是線性表、樹、圖等資料結構。本書討論非數值問題的資料組織和處理,主要內容有如下4點:
(1)資料的邏輯結構:線性表、樹、圖等資料結構,其核心是如何組織待處理的資料以及資料之間的關係。
(2)資料的儲存結構:如何將線性表、樹、圖等資料結構儲存到計算機的儲存器中,其核心是如何有效地處理資料。
(3)演算法:如何基於資料的某種儲存結構實現插入、刪除、查詢等基本操作,其核心是如何有效地處理資料。
(4)常用資料處理技術:包括查詢技術、排序技術、索引技術等。
1.3資料結構的基本概念
1.3.1資料結構
資料是資訊的載體,在電腦科學中是指所有能輸入到計算機中並能被電腦程式識別和處理的符號集合。可以將資料分為兩大類:一類是整數、實數等數值資料;另一類是文字、聲音、圖形和影象等非數值資料。
資料元素是資料的基本單位,在電腦程式中通常作為乙個整體進行考慮和處理。構成資料元素的不可分割的最小單位稱為資料項。
資料結構是指相互之間存在一定關係的資料元素的集合。需要強調的是,資料元素是討論資料結構時涉及的最小資料單位,其中的資料項一般不予考慮。按照視點的不同,資料結構分為邏輯結構和儲存結構。
資料的邏輯結構是指資料元素之間邏輯關係的整體。
根據資料元素之間邏輯關係的不同,資料結構分為以下四類。
(1) 集合:資料元素之間就是「屬於同乙個集合」,除此之外,沒有任何關係。
(2) 線性結構:資料元素之間存在著一對一的線性關係。
(3) 樹結構:資料元素之間存在著一對多的層次關係。
(4) 圖結構:資料元素之間存在著多對多的任意關係。
資料的儲存結構又稱為物理結構,是資料及其邏輯結構在計算機中的表示,換言之,儲存結構除了儲存資料元素之外,必須隱式或顯式地儲存資料元素之間的邏輯關係。通常有兩種儲存結構:順序儲存結構和連線儲存結構。
順序儲存結構的基本思想是:用一組連續的儲存單元依次儲存資料元素,資料元素之間的邏輯關係由元素的儲存位置來表示。
鏈式儲存結構的基本思想是:用一組任意的儲存單元儲存資料元素,資料元素之間的邏輯關係用指標來表示。
資料的邏輯結構是從具體的問題抽象出來的資料模型,是面向問題的,反映了資料元素之間的關聯方式或鄰接關係。資料的儲存結構是面向計算機的,其基本目標是將資料及其邏輯關係儲存到計算機的記憶體中。為了區別於資料的儲存結構,常常將資料的邏輯結構稱為資料結構。
資料的邏輯結構和儲存結構是密切相關的兩方面。一般來說,一種資料的邏輯結構可以用多種儲存結構來儲存,而採用不同的儲存結構,其資料處理的效率往往是不同的。
1.3.2抽象資料型別
抽象資料型別是乙個資料結構以及定義在該結構上的一組操作的總稱。抽象資料型別可理解為對資料型別的進一步抽象,資料型別和抽象資料型別的區別僅在於:資料型別指的 是高階程式語言支援的基本資料型別,而抽象資料型別指的是自定義的資料型別。
在設計抽象資料型別時,把定義和實現分開來。定義部分只包含資料的邏輯結構和所允許的操作集合,一方面,使用者依據這些定義來使用抽象資料型別,即通過操作集合對該抽象資料型別進行操作;另一方面,實現者依據這些定義來完成各種操作的具體實現。
抽象資料型別提供了定義和實現的不同檢視,實現了封裝和資訊隱藏。
1.4演算法及演算法分析
1.4.1演算法及其描述方法
演算法是對特定問題求解步驟的一種描述,是指令的優先序列。演算法必須滿足下列5個重要特性:輸入、輸出、有窮性、確定性和可行性。
好的演算法除了以上5個特性外還應滿足:正確性、健壯性、簡單性、抽象分級和高效性。
偽**是介於自然語言和程式語言之間的方法,它採用某一程式語言的基本語法,操作指令可以結合自然語言來設計。至於演算法中自然語言的成分有多少,取決於演算法的抽象級別。抽象級別高的偽**自然語言多一些,抽象級別低的偽**程式語言的語句多一些。
1.4.2演算法分析
(1)度量演算法效率的方法
如何度量乙個演算法的效率?一種方法是事後統計,但是這種方法的缺點太多。我們通常會採用另一種方法:事前分析估算的方法----漸進複雜度。
(2)演算法的時間複雜度
當問題規模充分大時,演算法中基本語句的執行次數在漸進意義下的階,稱作演算法的漸進時間複雜度,簡稱時間複雜度,通常用大o(讀作「大歐」)記號表示。
(3)最好、最壞和平均情況
(4)演算法的空間複雜度
演算法的空間複雜度是指在演算法的執行過程中,需要的輔助空間數量。輔助空間是除演算法本身和輸入輸出資料所佔據的空間外,演算法臨時開闢的儲存空間。
資料結構筆記 第一章 緒論
1.1 資料結構在 程式設計中的作用 1 資料結構 待處理的資料以及資料之間的關係。2 資料表示 將資料以及資料之間的關係儲存到計算機的記憶體中。3 資料處理 具體的操作步驟,將問題求解的基本思路形成演算法。沃思給出乙個著名的公式 資料結構 演算法 程式 程式設計的一般過程 1.2 資料結構討論的主...
資料結構(c )第一章 緒論
資料處理 乙個實際問題的求解必須滿足各項處理要求,這項任務成為資料處理。計算機不能分析問題並產生問題的解決方案,必須由人類分析問題,確定問題的解決方案,編寫程式,然後讓計算機執行程式獲得問題的解。資料結構問題起源於程式設計。資料表示 將資料儲存在計算機 記憶體 中 資料處理 處理資料設計方案 演算法...
資料結構第一章緒論
緒論主要是對計算機資料結構一書有大致了解,系統的講解資料結構在程式結構的應用,資料結構的相關概念,演算法在程式中的應用,從而從巨集觀上了解資料結構,更有利於以後學習。1 資料結構在程式中的應用 其實乙個公式就可以了解程式和演算法還有資料,即資料結構 演算法 程式,由公式可知資料結構是程式的一部分。2...