演算法:
演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。
演算法具有五個基本特性
:輸入、輸出、有窮性、確定性和可行性。
演算法設計的要求:
應該具有正確性、可讀性、健壯性、高效率和低儲存量的特徵。
2.7.1
事後統計方法:
這種方法主要是通過設計好的測試程式和資料,利用計算機計時器對不同演算法編制的程式的執行時間進行比較,從而確定演算法效率的高低。(
有缺陷)
2.7.2事前分析估算方法:
在計算機程式編制前,依據統計方法對演算法進行估算。
拋開這些與計算機硬體、軟體有關的因素,乙個程式的執行時間,依賴於演算法的好壞和問題的輸入規模。
所謂問題輸入規模是指輸入量的多少。
某個演算法,隨著n
的增大,它會越來越優於另一演算法,或者越來越差於另一演算法。
這其實就是事前估算方法的理論依據,通過演算法時間複雜度來估算演算法時間效率。
在進行演算法分析時,語句總的執行次數t(n)
是關於問題規模
n的函式,進而分析
t(n)隨n
的變化情況並確定
t(n)
的數量級。演算法的時間複雜度,也就是演算法的時間量度,記作:
t(n)=o(f(n))
。它表示隨問題規模
n的增大,演算法執行時間的增長率和
f(n)
的增長率相同,稱作演算法的漸近時間複雜度,簡稱為時間複雜度。其中
f(n)
是問題規模
n的某個函式。
2.9.2推導大
o階方法
1.用常數
1取代執行時間中的所有加法常數。
2.在修改後的執行次數函式中,只保留最高端項。
3.如果最高端項存在且不是
1,則去除與這個項相乘的常數。得到的結果就是大
o階。
我們要分析演算法的複雜度,關鍵就是要分析迴圈結構的運**況。
常見的時間複雜度如表2-10-1
所示。
常用的時間複雜度所耗費的時間從小到大依次是:
演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法空間複雜度的計算公式記作:s(n)=o(f(n))
,其中,
n為問題的規模,
f(n)
為語句關於
n所佔儲存空間的函式。
大話資料結構讀書筆記
第一章 資料結構的定義 資料就夠是相互直接存在一種或多種特定關係的資料元素的集合 邏輯結構 集合結構 線性結構 樹形結構 圖形結構 第二章 演算法 1 演算法的特性 輸入 輸出 有窮性 確定性和可行性 2 演算法事假複雜度定義 在進行演算法分析時,語句總的次數t n 第三章1 線性表 定義 零個或多...
大話資料結構 讀書筆記
是相互之間存在一種或多種特定關係的資料元素的集合。說白了就是資料的集合 但是集合裡面的資料之間存在特地的關係 這翻譯得好像沒說一樣 是指資料元素之間的相互關係 指資料的邏輯結構在計算機儲存形式 鏈式儲存結構 是把資料元素存放在任意的儲存單元 這組儲存單元可以是連續的 也可以是不連續的 資料型別指的是...
讀書筆記 大話資料結構 1
對於電腦科學,資料結構的重要性不言而喻。它對於乙個程式設計師的功力的提高起著關鍵的作用。勿在浮沙築高台,想要成為一名合格的hacker。基礎理論決定乙個程式設計師思維的深度。介於此,決定認真學習資料結構,找到比較基礎易懂的大話資料結構來開始我的學習之旅。資料結構 相互之間存在一種或多種特定關係的資料...