演算法導論第一課

2021-07-26 13:00:56 字數 1421 閱讀 7554

計算機效能

比效能更重要的是?

正確性、簡介、可維護性、穩定性、健壯性、特性、功能性、模組化、安全、可擴充套件性、使用者體驗

效能的重要性?

效能的好與壞直接決定著可行、不可行。比如實時資料

有趣,我們嚮往速度。

排序問題?

輸入:a1,a2,...an 

輸出:a1`<=a2`<=...<=an`

插入排序 

演算法複雜度  θ(n^2)

偽**insertion sort   a[1,2,3... n]

for j <- 2  to n

do key <- a[j]

i <- j-1

while i>0 and a[i]>key

do a[i+1]<-a[i]

i <- i-1

a[i+1] <- key

執行時間的決定因素

已排序程度

輸入規模

執行的上界

平均值  涉及到每種情況出現的概率

執行的下界

計算機的計算能力(一般用兩種演算法在同一臺計算機上的表現)

演算法的大局觀

漸進分析

1.忽略掉依賴於機器的常量

2.不去檢查實際的執行時間,而是關注執行時間的增長

漸進符號

θ  讀作theta

寫個公式,棄去它的低階項,並忽略前面的常數因子

歸併排序

merge  sort a[1,2,3... n]

1.if n = 1 ,done

2.對  a[1,2,3,..n/2] 、  a[n/2,...n] 分別排序

3.把兩個排好序的表歸併

20   12

13   11  

7    9

2    1

先比較2和1,1比較小,則為第乙個,剩下2,

2去跟9比較,2比較小,為第二個,剩下9,

9跟7比較,7比較小,為第三個,剩下9,

9跟13比較,9比較小,為第四個,剩下13,

13跟11比較,11比較小,為第五個,剩下13,

13跟12比較,12比較小,為第六個,剩下13,

13跟20比較,13比較小,為第七個,剩下20,

20為最後乙個,為第八個。

每一次比較只關注兩個元素,挑出最小的,再把陣列指標推進一位。

把兩個表歸併的時間為θ(n).

總時間t(n) =  t(1,2,..n/2) + t(n/2,...n)  + θ(n)         (n>1)

t(n) =  2t(n/2)  +  θ(n)                           (n>1)

遞迴樹t(n) = 2t(n/2) + cn                (用cn顯式函式替換了隱式的θ(n) )

時間複雜度t(n)= θ(nlgn)

演算法導論第一課

1.課程分兩部分 演算法分析,演算法設計 2.演算法分析 首先考慮的是效能,how fast 其次會考慮通訊,ram,disk占用等等 3.what is more important than perf 功能性,模組化,安全,使用者友好,可擴充套件.then why study algs?1,pe...

第一課 導論和形成

author rosschan一 經濟學的產生 慾望 自由物品 free goods 和經濟物品 economic goods 經濟物品是慾望的主體,同時人們需要為此付出代價。矛盾因此產生於無窮的慾望與有限的經濟物品之間 從而引出了稀缺性的概念 稀缺性 scarcity 相對於人類的無窮慾望而言,經...

開學第一課

因為是開學第一課,而且這是我的第一篇個人部落格,更何況還是技術部落格,所以我會認真對待,不過畢竟第一次,所以難免各方面會有不足,所以有任何的意見或建議都可以提出來以供本人提高。下面廢話少說,進入正題。使用quartus,新建乙個專案,建立乙個bdf檔案,雙擊bdf空白處,新增元件符號。找到 7413...