《大話資料結構 》閱讀筆記 1 4章

2021-08-09 04:54:45 字數 1814 閱讀 8652

3.資料結構:相互之間存在一種或多種關係的資料元素的集合

4.資料結構——邏輯結構和物理結構

邏輯結構

(1)集合結構:所有元素平等地屬於乙個集合

(2)線性結構:一對一

(3)樹形結構:一對多

(4)圖形結構:多對多

物理結構(儲存結構)【將資料和邏輯關係儲存到計算機記憶體中)

(1)順序儲存

(2)鏈式儲存

1.演算法的特性:輸入、輸出、有窮性(自動結束不會出現無限迴圈)、確定性(只有唯一結構)、可行性

2.演算法設計的要求:正確性、可讀性、健壯性、時間效率高和儲存量低

事前分析估算方法:在計算機程式編制前,依據統計方法對演算法進行估算。

經過分析, 我們發現, 乙個用高階程式語言編寫的程式在計算機上執行時所消耗

的時間取決於下列因素

1. 演算法採用的策略、方法。

2 . 編譯產生的**質量。

3 . 問題的輸入規模。

4. 機器度

5. 行度

*************************===

4.計算時間複雜度

顯然,由此演算法時間複雜度的定義可知,**我們的三個求和演算法的時間複雜度分別

為o(葉, o(刀, o(nη。我們分別給官們取了非官方的名稱, 0 (1) 叫常數階、o(n) 叫線

性階、o(n 2) 叫平方階**

常用的時間複雜度所耗費的時間從小到大依次是:

0(1) < o(logn) < o(n) < o(nlogn) < 0(n2

) < 0(n3

) < 0(2」 ) < o(n!) < o(n」)

5.空間複雜度

演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法空間複雜度的計算公

式記作: s(o)= o(f(o)) ,其中, 0 為問題的規模, f(n)為語句關於n 所佔儲存空間的

函式。1.list(有限序列)

2.」陣列的長度」和」續性表的長度」

**陣列的長度是存放線性褻的儲存空間的長度,儲存分配後這個量是一般是不變

的。有** 一般高階語言, 比如c 、c++都可以用程式設計手段實現動態分配陣列,不過這會帶來效能上的損耗。

**線性表的長度是線性表中資料元素的個數,隨著線性表插入和刪除操作的進行,

這個量是變化的。**

在任意時刻,線性表的長度應該小於等於陣列的長度。

3.鏈式結構中,除了要存資料元素資訊外, 還要儲存它的

後繼元素的儲存位址。

儲存資料元素資訊的域稱為資料域, 把儲存直接後

繼位置的域稱為指標域。指標域中儲存的資訊稱做指標或鏈。這兩部分資訊組成資料元素ai 的儲存映像,稱為結點(node) 。

1.後進先出的棧(僅僅在表尾進行插入和刪除)

棧頂(表尾) 棧底

2.棧的鏈式儲存結構,簡稱為鏈錢。

3.棧的應用:遞迴

寫遞迴程式最怕的就是陷入永不結束的無窮遞迴中, 所以, 每個遞迴定義

必須至少有乙個條件,滿足時遞迴不再進行,即不再引用自身而是返回值退出。

選代和遞迴的區別是:迭代使用的是迴圈結構,遞迴使用的是選擇結構。遞迴能使程式的結構更清晰、更簡潔、更容易讓人理

解,從而減少讀懂**的時間。但是大量的遞迴呼叫會建立函式的副本,會耗費大量

的時間和記憶體。選代則不需要反覆呼叫函式和占用額外的記憶體。

4.佇列:一端插入(隊尾)一端刪除(隊頭)

大話資料結構閱讀筆記(1)

資料結構很重要,但對於非科班出身的程式設計師來說,熟練地掌握資料結構在程式設計中的應用是一件很困難的事,因為資料結構很抽象,有些演算法理解起來很困難,最近找了很多關於資料結構的書,決定再重溫一下程杰的 大話資料結構 記錄重要的資料結構知識筆記供自己和大家在以後的學習與程式設計時參考。資料 是描述客觀...

大話資料結構閱讀筆記 2

線性表的順序儲存結構,在存 讀資料時,不管是哪個位置,時間複雜度都是o 1 在插入或刪除資料時,時間複雜度是o n 優點 1 無須為表示表中元素之間的邏輯關係而增加額外的儲存空間 2 可以快速地訪問表中任意位置的元素。缺點 1 插入或刪除操作需要移動大量元素 2 當線性表的長度變化較大時,難以確定儲...

《大話資料結構》筆記

第一章 1.程式設計的實質是對確定的問題選擇乙個好的資料結構,加上設計一種好的演算法。2.資料元素 是組成資料的 有一定意義的基本單位,在計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以自若干個資料項組成,資料項是資料不可分割的最小單位。3.資料結構分為邏輯結構和物理結構。4.邏輯結構分為以...