非形式地說,演算法就是任何良定義的計算過程,該過程取某個值或值的集合作為輸入並產生某個值或值的集合作為輸出。
資料結構是一種儲存和組織資料的方式,旨在便於訪問和修改。
1.1-1 給出現實生活中需要排序的乙個例子或者現實生活中需要計算凸殼的乙個例子
學生時代學習成績的排序是最常見的排序例子
1.1-2除速度外,在真實環境中還可能使用哪些其他有關效率的量度?
程式設計師**的bug率、處理乙個問題的深度等
1.1-3 選擇一種你以前已知的資料結構,並討論其優勢和侷限。
就說二分法吧,優勢就是比較簡單,容易理解。缺點就是太慢。
有這麼乙個例子,比如從100個數中查詢乙個數,另這個數就是1。這個時候要先查50、25、12、6、3、2、1… 看吧很慢。。
1.1-4 前面給出的最短路徑與旅行商問題有哪些相似之處?又有哪些不同?
最短路徑問題是不用考慮路途中的目的點,直接到達終點。而旅行商問題是要從整體的考慮這個系統中完成以後最短的路徑。
效率問題:
本書舉了乙個例子,就是插入排序和歸併排序。在這裡了解到插入排序所花的時間大致為c*n*n,c是不依賴於n的常數。所花費的時間大致和n*n成正比。
而歸併排序所花的時間大致為c*n*lgn
基於數學知識你可能忘了比如 lgn是啥 如圖:
嗯,就是這樣,總的來說插入排序比歸併排序慢的很多。
即使是最優秀的計算機配上了插入排序、一般的計算機配上了歸併排序,那麼在數量級相當龐大的時候,一般的計算機也比最優秀的計算機快的許多。
1.2-1 給出在應用層需要演算法內容的應用的乙個例子,並討論涉及演算法的功能。
1.2-2 假設我們正比較插入與歸併排序在相同機器上的實現。對規模為n的輸入,插入排序執行8n^2步,而歸併排序執行64nlgn步。問對哪些n值,插入排序優於歸併?
在演算法導論中lgn=log2n。
經計算,8n^2=64nlgn,在2
演算法導論筆記第一章
首先從別人的博文中看到乙個對演算法的最為簡單而又簡潔的理解 演算法 輸入 良好的計算過程 正確輸出。仔細想,就是這個樣子的。有時間,習慣了有問題就上網查詢,而漸漸使大腦變的遲鈍許多,遇到問題第一反應不是仔細想想而是想要去查查怎麼回事,這不是個好的習慣。要改正。下面是自己對習題的一些想法 1.1 1 ...
演算法導論筆記第一章
首先從別人的博文中看到乙個對演算法的最為簡單而又簡潔的理解 演算法 輸入 良好的計算過程 正確輸出。仔細想,就是這個樣子的。有時間,習慣了有問題就上網查詢,而漸漸使大腦變的遲鈍許多,遇到問題第一反應不是仔細想想而是想要去查查怎麼回事,這不是個好的習慣。要改正。下面是自己對習題的一些想法 1.1 1 ...
演算法導論第一章
第一章 演算法在計算中的作用 1.1演算法 非形式地說,演算法就是任何良定義的計算過程,該過程取某個值或值的集合作為輸入並產生某個值或值的集合作為輸出。這樣,演算法就是把輸入轉換成輸出的計算步驟的乙個序列。若對每個輸入例項演算法都以正確的輸出停機,則稱該演算法是正確的,並稱正確的演算法解決了給定的計...