嚴蔚敏 資料結構學習筆記1

2021-09-17 18:30:04 字數 1184 閱讀 4108

要點:

1.名詞術語的含義

2.演算法五個要素的確切含義

3.計算語句頻度和估算演算法時間複雜度的方法

演算法的五大要素:

1.有窮性:有時間限制,不能無窮執行

2.確定性:每種情況都有演算法對應 規則確定

3.可行性:所有操作足夠基本,可通過有限次數實現

4.輸入:有輸入,作為演算法加工物件的量值

5.輸出:輸出一致性,資訊加工後的結果

演算法設計的目標

1.正確性:

滿足需求

四個層次理解正確性:

(1)程式中不含語法錯誤

(2)程式對於幾組輸入資料能夠得出滿足要求的結果

(3)對刁難型資料能夠得出滿足要求的結果(針對性問題)

(4)對於一切合法的輸入都能得出滿足要求的結果

2.可讀性:

(1)人與人交流的必要性

(2)晦澀難懂的程式更容易隱藏問題

3.健壯性:當輸入非法時,演算法能恰當的做出反映或進行相應的處理

4.高效率與低儲存量需求(最後):實行時間和最大的儲存空間

演算法效率的衡量方法和準則:

事後統計法(執行程式時統計):

缺點:1必須執行程式 2.其他因素掩蓋演算法的本質

事前分析估算法:

1.演算法選用的策略

2.問題的規模

3.程式設計的語言

4.編譯程式產生機器**的質量

5.計算機執行指令的速度

我們考慮乙個演算法的執行工作量的大小,依賴於問題規模的大小,隨著問題規模n的大小變化,執行時間也會跟著變化

演算法執行時間的增長率和f(n)的增長率相同,則可記做t(n)=o(f(n))

估算演算法的漸進時間複雜度的方法:

演算法=控制結構+原操作(固有資料型別的操作)

演算法的執行時間=原操作執行時間*sum(原操作的執行次數)

關鍵在於找出主要的基本操作,起著決定性的作用

以語句蘋度作為演算法的時間複雜度,以最壞的情況為準

演算法的儲存量包括:

1.輸入資料所佔空間

2.程式本身所佔空間

3.輔助變數所佔空間

若輸入資料所佔空間與問題本身有關,和演算法無關,則只需分析除輸入和程式之外的輔助變數所佔額外空間

若所需額外空間相對於輸入資料量說是常數,則稱此演算法為原地工作

當所需的空間和輸入的複雜度有關 則以最壞情況計算

嚴蔚敏資料結構學習筆記一 緒論

第一章 緒論 1.1資料結構討論的範疇 演算法 怎麼處理問題 資料結構 問題的數學模型 1.2基本概念 一,資料與資料結構 資料 符號的集合 資料元素 資料中的元素 資料項 資料元素是資料項的集合,資料結構中討論的最小單位 資料結構 帶結構的資料元素的集合 資料結構形式定義 資料元素,資料元素上的關...

嚴蔚敏版資料結構學習筆記(3) 棧

棧是只能在表尾進行插入和刪除的一種簡單一點的線性表。表尾端是棧頂 top 表頭端是棧底 bottom 不含元素的稱為空棧。因為我們只能對棧頂的元素進行插入和刪除操作,所以棧這個資料結構就是乙個很有 原則 的結構,棧的修改是按照後進先出的原則進行的,也就是lifo last in first on 可...

資料結構 嚴蔚敏

最近一直想找一本純資料結構的書來學習,找來找去都沒有找到一本合適的書籍,相比之下國內的書籍之中,嚴蔚敏和吳偉民的還算是經典版了,很多國內其他資料結構教材都參考這本書的。但缺點是很多都是偽 對程式設計初學者來說有一些難度,甚至有些考研的同學來看這本書有很多還看不懂,並且裡面也有些容易迷惑人的地方。出於...