20220509数据结构绿书读书笔记
20220509
數據結構讀書筆記
全書目錄如下
1.編程原則
2.棧
3.隊列
4.鏈棧&隊列
5.回溯
6.列表和串
7.搜索
8.排序
9.表格與信息檢索
10.二叉樹
11.多叉樹
12.圖
13.波蘭式
開坑!
第一章其實上學時候就看過,我很多的習慣都是因為這本書才養成的,但當時并沒有記錄- -,這次一并補上,看英文書的好處就是寫的足夠詳細,什么時候讀都能get到作者的意思,不好的地方就是太啰嗦了。但好在我是為了消磨時間才立的這個flag
編寫一個large的程序往往有很多問題,這里的large可以理解為實現復雜或者規模龐大
問題1.精確的定義問題
拆分并逐漸分割成小問題,直到可以方便處理
問題2.程序設計
“先跑起來再慢慢優化”對小程序也許有用,但并不適合large的程序,大型程序的每個部分都需要良好的組織、清晰的實現、良好的可讀性,否則它將難以復用或被他人閱讀
問題3.選擇合適的數據結構
同一個問題多種算法和數據結構都能解決,很難選擇出一個最好的。在算法設計上一般來說選擇的最好方法是看數據是如何存儲的:
1.數據之間的關系是怎樣的
2.那些數據保持在內存中
3.當需要的時候哪些數據已經被計算好了
4.哪些數據是存在文件里的?文件是如何被組織的
后面會先學列表、棧、隊列,然后再學幾個厲害的算法來對數據做處理,比如排序和搜索
問題4.算法分析
當有多種方法管理數據和設計算法的時候,就必須有一個標準來幫忙評判算法。
問題5.測試和驗證程序的正確性
debug程序的難度會隨著程序的規模而增加,可能是指數級
正確性:減少錯誤,讓程序更加方便維護、方便我們驗證算法是正確的、有方法可以測試我們的程序,讓我們自信的說程序沒有非預期行為
問題6.維護
當程序開始提供服務后,可能還會有新的需求
吹一波C++NB:
C++允許抽象數據、允許面向對象設計、允許自頂向下的設計方法、允許代碼重用 。。。。。
casestudy ?GameOfLife
cell不知道是翻譯作細胞更好,還是叫單元格更好,反正前面都說grid的了,我就先當成細胞了
生存模擬,在一個無邊界的矩陣中每個細胞都可以被有機物占用或不占用,被有機物占用的被稱作“活著”,未被占用的稱作“死的”
規則如下
1.給定1個細胞,它相鄰的8個細胞都可以被接觸,橫豎斜都可以,稱之為鄰居
2.如果一個細胞活著,但同時鄰居都沒有存活,或僅剩1個存活,則在下一代將因孤獨而死
3.如果一個細胞活著,但同時有4個或4個以上的鄰居存活,則在下一代將因擁擠而死
4.如果一個存活的細胞有2個或3個鄰居存活,則在下一代可以繼續保持存活
5.如果一個細胞死了,但如果正好有3個活著的鄰居,那么在下一代將被復活。所有死亡的其他細胞在下一代將保持死亡狀態(這不是廢話么hhh)
6.所有的生死均在一瞬間同時完成,所以正在死亡的細胞可以幫助其他細胞復活,但無法阻止其他細胞因擁擠導致的死亡。剛出生的細胞也無法復獲或殺死上一代存活的細胞
一組特定排列的細胞叫做初始布局,上面的規則描述了一個布局如何在每代更替中變為下一個布局
多樣性;有的布局會很快死干凈、有的會從很小一點漲到巨大。。。難以人工預測
小目標:寫一個程序模擬一個初始布局是如何一代代變化的
這個游戲被發明后不久,MARTIN GARDNER就在Scientific American的專欄里討論過,被很多人所吸引
跳過面向對象基礎部分,直接進入正題
本書的后續將嚴格區分method和function,中文翻譯為方法和函數,方法是公開的,函數是私有的。(我寫筆記會盡量遵守,但不保證hhhh
雖然書用的是C++,但并不影響我使用Java來表達相同的內容,代碼將于我覺得可以的時機,公開在github和gitee上
耗時一個半小時,才讀了8頁hhhh,能讀得完么= = ?后面少記點筆記也許能讀的快點
20220509結束
總結
以上是生活随笔為你收集整理的20220509数据结构绿书读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10运行命令大全
- 下一篇: Mac使用小技巧及grapher作图神器