《資料結構和演算法分析 C語言描述》讀書筆記

2021-07-23 02:26:32 字數 1060 閱讀 5638

第一章主要講的是數學知識的複習,指數,級數什麼的,最後,淺層次的談了一下遞迴。

當乙個函式用它自己來定義時就稱為是遞迴(recursive)的,c語言是允許遞迴的。但重要的是要記住,c提供的僅僅是遵循遞迴思想的一種企圖。不是所有的數學遞迴函式都能有效地或者正確地由c的遞迴模擬來實現。

舉個遞迴的小例子:

int x

f(int x)

if(0 == x)

return 0;

else

return 2*f(x-1)+x*x;

關於遞迴,有幾個重要並且可能會被搞混的地方。乙個常見的問題是:它是否就是迴圈邏輯?答案是:雖然我們定義乙個函式用的是這個函式的本身,但是我們並沒有用函式本身定義該函式的乙個特定的例項。換句話話說,通過使用f(5)來得到f(5)的值才是迴圈的。通過使用f(4)得到f(5)的值不是迴圈的,除非f(4)的值又要用到對f(5)的計算。

遞迴的前兩個基本法則:

1.基準情形:你必須總要有某些基準的情形,它們不用遞迴就能求解

2.不斷推進:對於那些需要遞迴求解的情形,遞迴呼叫必須總能朝著生產基準情形的方向推進。

3.設計法則:假設所有的遞迴呼叫都能執行。這是一條重要的法則,我們之後會考慮遞迴的效率問題

第二章講的是一些演算法的分析

這一章開始講的是各種語句索要消耗的時間和幾種演算法

對分查詢,也就是傳說中的二分法吧

歐幾里得演算法,定理:如果m>n,則m mod n < m/2;

高效率的取冪運算

我把看到最深刻乙個演算法寫一下,是講最大子串行和問題的,就是比如6個數字,要計算最大加起來是那種情況,要是連續的,不能1.3.5,只能123 或者 45 這樣。

剛開始看到覺得這道題目蠻複雜的,但最後看到筆者的演算法真是超級簡單

int maxsubsequencesum(const int a,int n)

int thissum,maxsum,j;

thissum = maxsum = 0;

for(j = 0; j < n; j++)

return maxsum;

我感覺寫的不錯,給函式變數命名都很好,不錯不錯!

資料結構與演算法分析 C語言描述

第一種方法,先進行排序,再返回位置k上的元素。簡單排序問題 第二種方法,先將前k個元素讀入,再將剩下的元素逐個讀入,如果新元素大於陣列中第k個元素就找到他合適的位置並將陣列中的乙個元素擠出。第三種方法,利用快排的特點 假設預設公升序排序 每一次快排操作都能確定乙個數在排序結果中的最終固定位置,即該位...

資料結構與演算法分析 c 語言描述

編寫帶有下列宣告的兩個例程 void permute string str void permute char str,int low,int high 第乙個例程是個驅動程式,它呼叫第二個例程並顯示string str中字元的所有排列。例如,str是 abc 那麼輸出的串則是abc,acb,bac...

《資料結構與演算法分析(C 語言描述)》

第1章 uml教程 更多軟體恐怖故事 nist新聞稿 軟體錯誤每年給美國經濟造成595億美元的損失 nist報告本身 pdf 第2章 ieee對實數的反感 c 的按位運算子 第3章 工會 記憶體結構 第5章模式匹配 資料加密 第9章用位集實現集 有關valarrays的更多資訊 第10章 用於解析表...