大話資料結構學習筆記(二)

2021-06-25 14:03:31 字數 1098 閱讀 9561

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

演算法五個基本特性:輸入、輸出、有窮性、確定性和可行性。

1、輸入輸出:演算法具有零個或多個輸入,乙個或多個輸出。

2、有窮性:指演算法在執行有限的步驟之後,自動結束而不會出現無限迴圈,並且每乙個步驟在可接受的時間內完成。(在實際應用中合理的、可以接受的「有邊界」)

3、確定性:演算法的每一步驟都具有確定的含義,不會出現二義性。演算法在一定條件下,只有一條執行路徑,相同的輸入只能有唯一的輸出結果。

4、可行性:演算法的每一步都必須是可行的,每一步都能通過執行有限次數完成。

演算法的設計要求:

1、正確性:演算法的正確性是指演算法至少應該具有輸入、輸出和加工處理無歧義性、能正確反映問題的需求、能夠得到問題的正確答案。

4、時間效率高和儲存量低

演算法效率的度量方法:

1、事後統計方法:主要是通過設計好的測試程式和資料,利用計算機計時器對不同演算法編制的程式的執行時間進行比較,從而確定演算法效率的高低。

2、事前分析估算方法:在計算機程式編制前,依據統計方法對演算法進行估算。

高階語言編寫的程式在計算機上執行時消耗的時間取決於:1、演算法採用的策略、方法;2、編譯產生的**質量;3、問題的輸入規模(輸入量多少);4、機器執行指令的速度

在分析乙個演算法的執行時間時,重要的是把基本操作的數量與輸入規模關聯起來,即基本操作的數量必須表示成輸入規模的函式。

判斷乙個演算法的效率是,函式中的常數和其他次要項常常可以忽略,而更應該關注最高端項的階數。

演算法時間複雜度:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級。演算法的時間複雜度,也就是演算法的時間度量,記作:t(n)=o(f(n))。它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸近時間複雜度,簡稱為時間複雜度。其中f(n)是問題規模n的某個函式。

推導大o階:1、用常數1取代執行時間中的所有加法常數。

2、在修改後的執行次數函式中,只保留最高端項。

3、如果最高端項存在且不是1,則去除與這個項相乘的常數。

常用的時間複雜度所消耗的時間從小到大依次是:

大話資料結構學習筆記(二)

測定執行時間最可靠的方法就是計算對執行時間有消耗的基本操作的執行次數。在評定演算法的優劣時,與最高次項相乘的常數並不重要,而與最高端項的階數有關。演算法時間複雜度 大o記法。o 1 常數階,o n 線性階,o n 2 平方階。推導大o階 1.用常數1取代執行時間中的所有加法常數 2.在修改後的執行次...

大話資料結構學習筆記二 演算法

演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。1 輸入輸出 演算法具有零個或者多個輸入,至少有乙個或者多個輸出。2 有窮性 指演算法在執行完有限的步驟之後,自動結束而不會出現無線玄幻,並且每個步驟都在可接受的時間內完成。3 確定性 演算法的每乙個...

《大話資料結構》 學習筆記1

第一章 資料結構緒論 經典 if you give someone a program you will frustrate them for a day if you teach tem how to program,you will frustrate them for a lifetim.如果...