做個決定,從今天開始,每天一題,把自己每天學的東西寫出來,也算是個學習筆記。
駑馬十駕,功在不捨
何謂資料結構?
資料結構反映資料的內部構成,即乙個資料由哪些成分資料組成,以什麼樣的形式組成,呈現什麼樣的結構。資料結構包括邏輯上的資料結構和物理上的資料結構。邏輯上的資料結構指的是成分資料之間的邏輯關係,物理上的資料結構指的是成分資料的物理儲存形式。
資料型別
資料型別根據資料結構進行劃分,在高階程式語言中,資料型別用來說明乙個資料在資料分類中的歸屬。它 是資料的屬性,這種屬性限定了資料的取值範圍。
最常用的資料結構是:陣列結構和記錄結構。
陣列結構的特點:
1.成分資料的個數固定。它們之間的邏輯結構是由成分資料的序號(也即陣列的下標)來體現。這些成分資料按照序號的先後順序乙個接乙個地排列起來。
2.每乙個成分資料具有相同的資料結構(可以是簡單的資料結構,也可以是複雜的資料結構),因而屬於同樣的資料型別(可以是簡單的資料型別,也可以示複雜的資料型別)。
3.所有成分資料被依序安排在一片連續的儲存區域中。
概括起來,陣列結構是線性的,均勻的,其成分資料可隨機訪問的結構。
記錄結構的特點:
1.同陣列結構一樣,成分資料的個數是固定的。但是它們之間沒有自然序,它們之間處於平等地位。每個成分資料都是乙個域並被賦予乙個網域名稱。不同的域有不同的網域名稱。
2.不同的域允許有不同的結構,因而屬於不同的資料型別。
3.與陣列結構一樣,它們可以隨機訪問,訪問的方式是按網域名稱訪問。
**********************************算 法****************************************
演算法:描述解決問題的步驟。是乙個運算序列。
該運算序列具備四個特徵:
1.有限性
序列的項數有限,且每一項都可在有限的時間內完成。
2.確定性
序列的每一項運算都有確定性,沒有二義性。
3.可以沒有輸入項,但一定要有輸出項。
4.可行性
對於任意合法的輸入都能得到正確的輸出。
這些特徵可用來判別乙個確定的序列是不是乙個演算法。
作為運算序列的演算法,有三個要素:
資料,運算,控制
即:1.作為運算序列中各種運算物件和運算結果的資料
2.運算序列中的各種運算
3.運算序列中的控制轉移。
資料:簡單最基本有布林值資料、字元資料、整數和實數資料等;
稍複雜的有向量、矩陣、記錄等資料;更複雜的有集合、樹和圖,還有聲音、圖形、影象等資料
運算:最基本最初等的有賦值運算、算術運算、邏輯運算和關係運算等;
稍複雜的有算術表示式和邏輯表達 式等;
更複雜的有函式值計算、向量運算、矩陣運算、集合運算,以及表、棧、佇列、樹 和圖上的運算等:此外,
還可能有以上列舉的運算的復合和巢狀。
控制:控制相對單純,在序列計算中,它只有順序、分支、迴圈、遞迴和無條件轉 移等幾種。
************************************抽象資料型別********************************************** 雖然寫到這裡,有點不想寫了,可是,不提抽象資料型別,實在是對不起這員大將。
根據自頂向下的步驟,在考慮演算法設計時,應該分兩層進行考慮。
首先考慮演算法的頂層運算步驟,然後考慮底層的運算步驟。
頂層的運算步驟,是在資料模型級上的運算步驟。
涉及的資料是資料模型中的乙個變數,暫不考慮資料結構。
涉及的運算時資料模型上的運算。即以資料模型上的變數為資料物件或資料結果,或二者兼之。
底層的運算步驟就是頂層步驟的具體實現。包括兩部分:
一、資料模型的具體表示,即資料結構
二、定義在資料模型上的資料運算的具體實現。
底層設計是頂層實現的具體實現,底層實現為頂層實現服務。為了將頂層和底層實現隔離,使在實現時不會互相牽制、互相影響,必須對兩者的介面進行一次抽象。讓底層只通過這個介面為頂層服務,頂層也只能通過這個介面呼叫底層運算。這個介面就是抽象資料模型。即:abstract data types.
要用計算機解決乙個複雜的問題,要經過以下幾個步驟:
1.將實際問題數學化。
即把乙個實際問題抽象成乙個一般的數學問題。這一步要引入數學概念,精確地闡述數學問題,弄清問題的已知條件,所要求的結果,並且找出兩者之間的顯式或隱式的關係。
2.對於確定的數學問題,找出其解決方法,即演算法設計。
這一步要建立求解模型。即確定問題的資料模型並定義該模型上的一組運算,然後借助對這組運算的呼叫和控制,從問題的已知條件出發,導向所要求的結果。形成演算法並用自然語言來表達。這種語言不是程式語言,不能被計算機所接受。
3.在計算機上用程式語言實現演算法。
4.在計算機編譯,除錯和測試所編制的程式,直到輸出所要的結果。
抽象資料型別是演算法設計和程式設計中的重要概念。
嚴格的定義是乙個資料模型和定義在該資料模型上的,作為演算法設計元件的一組運算。
抽象資料型別把資料模型和資料運算緊密地結合在一起。
為了提高演算法的效率,必須認真考慮資料模型。設計良好的資料模型提高運算效率。
長舒一口氣,今日到此結束。休息休息!
(一)資料結構學習筆記《什麼是資料結構》
以下是資料結構基礎理論的小總結 什麼是資料結構 資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映乙個資料的內部構成,即乙個資料由那些成分資料構成,以什麼方式構成,呈什麼結構。資料結構有邏輯上的資料結構和物理上的資料結構之分。邏輯上的資料結構反映成分資料之間的邏輯關係,而物理上的資料結...
資料結構學習(一) 陣列
2019年2月27日第一次書寫.2019年7月20日第二次書寫並修改完善.一 學習之路 二 實現內容 1.array類裡面實現的眾多陣列的基本操作,包括增 刪 查 改等方法 2.main函式裡面完成了對array方法的測試,並通過println顯示測試結果 3.補充了動態陣列以及泛型的方法,使得功能...
資料結構(一 資料結構基礎
程式 資料結構 演算法 越工作越發現業務 是很容易的,框架也是舊瓶裝新水,大體差不多。那麼好的 的區分在於演算法,效能這些的差距。而資料結構是演算法實現的基礎,演算法總是要依賴某種資料結構來實現的。好久沒有仔細看資料結構了,最近被頻繁的演算法,奈何我資料結構基礎不好。決定好好複習一遍,並輸出乙份文件...