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