讀書筆記 《大話資料結構》第二章演算法

2021-07-15 11:32:57 字數 1700 閱讀 5748

2.3兩種演算法的比較

#include #if 0	//需要執行 100次 

int main()

std::cout << sum;

return 0;

}#endif

#if 1

int main()

#endif

//顯然 第二個演算法更優秀

//演算法:解決特定問題求解的描述, 在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作

2.4演算法定義

演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。

2.5演算法的特性

輸入輸出:零個或多個輸入,至少乙個或多個輸出。

有窮性:有限的步驟,每個步驟在可接受的時間內完成

確定性:每一步都有確定的含義,沒有二義性

可行性:每一步都必須可行,執行有限次數完成

2.6演算法的設計

正確性可讀性

健壯性時間效率高和儲存量低

2.7演算法效率的度量方法

2.7.1事後統計方法:通過寫好的測試程式和資料,利用計算機對不同演算法比較,然後確定效率

缺點:必須事先把程式寫好,時間的快慢依賴計算機,演算法測試資料設計困難

2.7.2事前分析估計方法 :程式設計前對程式進行估計

缺點:依賴演算法的好壞

2.10常見的時間複雜度

o(1):表示演算法的執行時間為常量

o(n):表示該演算法是線性演算法

o(㏒2n):二分查詢演算法

o(n2):對陣列進行排序的各種簡單演算法,例如直接插入排序的演算法。

o(n3):做兩個n階矩陣的乘法運算

o(2n):求具有n個元素集合的所有子集的演算法

o(n!):求具有n個元素的全排列的演算法

o(1)2n)2)n)

排序法

最差時間分析

平均時間複雜度

穩定度

空間複雜度

氣泡排序

o(n2)

o(n2)

穩定 o(1)

快速排序

o(n2)

o(n*log2n)

不穩定

o(log2n)~o(n)

選擇排序

o(n2)

o(n2)

穩定 o(1)

二叉樹排序

o(n2)

o(n*log2n)

不一頂

o(n)

插入排序

o(n2)

o(n2)

穩定 o(1)

堆排序o(n*log2n)

o(n*log2n)

不穩定

o(1)

希爾排序oo

不穩定

大話資料結構 第二章 演算法(讀書筆記)

第二章演算法 2.1 開場白 2.2 資料結構與演算法關係 梁山伯與祝英台 2.3兩種演算法的比較 2.4 演算法定義 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。2.5演算法的特性 2.5.1輸入輸出 演算法具有零個或多個輸入,至少有乙個或多...

《大話資料結構》筆記 第二章 演算法(下)

給定兩個函式 f n 和 g n 如果存在乙個整數 n,使得對於所有的 n n,f n 總大於 g n 那麼我們說 f n 的增長漸近快於 g n 例如,演算法 a 要 2n 3 次操作,而演算法 b 要 3n 1 次。隨著 n 的增大,比較執行次數時,我們可以忽略加法常數。再例如,演算法 c 是 ...

老楊《大話資料結構》第二章 演算法

演算法是解決特定問題求解步驟的描述,計算機中表現為指令的有限序列,每條指令表示乙個或者多個操作。輸入輸出 有窮性確定性 可行性正確性 可讀性健壯性 時間效率高和儲存量低 事後統計方法 事前分析估計方法 通過書中所給1 2 99 100的例子,可以明顯對比出幾種不同演算法具有不同的空間和時間開銷。某個...