數據結構與算法分析筆記(1)第1章-數據結構和算法

1.1 數據結構的原則

1.1.1 學習數據結構的必要性

一個算法如果能在所要求的資源限制(resource constraint)內將問題解決好,則稱這個算法是有效率的(efficient)。一個算法如果比其他已知解所需要的資源都少,這個算法也可以稱爲是有效率的。一個算法的代價(cost)是指這個算法消耗的資源量。

爲解決某一問題而選擇數據結構時,應該完成以下幾步:

1.分析問題以確定任何算法均會遇到的資源限制;

2.確定必須支持的基本運算,並度量每種運算所受的資源限制;

3.選擇最接近這些開銷的數據結構。

1.2 抽象數據類型和數據結構

定義1.2  類型(type)是一組值的集合。數據類型(data type)是指一個類型以及定義在這個類型上的一組操作。數據項(data item)是一條信息或者其值屬於某個類型的一條記錄。數據項是數據類型的成員(member)。整數是簡單數據項(simple data item),因爲他不包含子結構。而銀行賬戶則屬於複雜數據項(aggregate data item)。

定義1.3 抽象數據類型(abstract data type),簡稱ADT,是指基於一個邏輯類型的數據類型以及這個類型上的一組操作。每一個操作由它的輸入和輸出定義。隱藏實現細節的過程稱爲封裝(encapsulation)。數據結構(data structure)是ADT的物理實現。ADT的每一個操作均由一個或者多個子程序來實現。

定義1.4  數據項有邏輯形式(logical form)和物理形式(physical form)兩個方面。用ADT給出的數據項的定義是它的邏輯形式。數據結構中對數據項的實現是它的物理形式。

1.3 問題、算法和程序

算法(algorithm):算法是指解決問題的一種方法或者一個過程。算法包括以下幾個性質:1.正確性(correct);2.具體步驟(concrete steps);3.確定性(no ambiguity);4.有限性(finite);5.可終止性(terminable)。

程序(program):一個計算機程序被認爲是使用某種程序設計語言對一個算法的具體實現。

定義1.6 問題(problem)是一個函數,或者是從輸入到輸出的一種映射。算法(algorithm)是一個能夠解決問題的、有具體步驟的方法。算法步驟必須無二義性,算法必須正確,長度有限,必須對所有輸入都能終止。程序(program)是算法在計算機程序設計語言中的實現。

其他參考書:Robert Sedgewick著的《算法》、Cormen、Leiserson等著的《算法概論》內容較先進。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章