演算法導論學習2

2021-05-25 07:11:52 字數 879 閱讀 8834

一般的,對於演算法來說,重點關注的是對演算法的時間和空間度量,也就是時間複雜度和空間複雜度。

演算法所需要的時間與輸入的規模同步增長的,而時間複雜度就是衡量演算法執行的基本運算元的乙個函式。

對於插入排序來說,當需要排列的陣列分別為順序排列和逆序排列時,演算法的時間複雜度是不一樣的。

根據演算法執行的每一步,每一步所執行的次數,得出乙個時間衡量函式。

順序排列:t(n)=an+b,為n

的線性函式

逆序排列:t(n)=an^2+bn+c,為n

的二次函式

上述分別為最佳情況和最差情況,一般考察演算法的最差執行時間!一般的,平均情況下的執行時間一般與最差情況一樣差!

當比較不同演算法的效率時,如果乙個演算法的最壞情況執行時間比另乙個演算法的低,其效率認為更高。

課後習題:

1.因為當n

很大時,可以忽略低階項的影響。

2.選擇排序偽**

input

:a[a1,a2,…,an]

output: sorted a

for i = 1:n-1

forj = i+1:n

find min of a[i:n]

enda[i] <--> a[min]

end迴圈不等式,我們選擇

a[1,i-1]

為已經排好序的陣列,而剩餘的元素比這些元素大,滿足迴圈不等式。只迴圈

n-1是因為剩餘的第

n個元素已經是最大的!

當所有元素按照公升序排序時,

該演算法按照降序排序也一樣

因此捨去低階項,該演算法的時間複雜度可以記為:3.

當查詢陣列中元素的可能性相等時,平均和最壞情況下都滿足

線性搜尋4.

比較合理的輸入使得演算法可以有最佳執行時間

演算法導論學習筆記(2)

big o notation 模擬為小於等於 n2 o n o n2 big omega notation 模擬為 大於等於 模擬為等於 嚴格符號 小o與小 模擬為小於和大於 解遞迴方法 1 替換法 guess the form,verify by induction,solve the const...

演算法導論學習 線段樹 2

線段樹 1 1.線段樹應用之動態點插與統計 如上圖所示,我們最後統計的時候是找出cover不為零的節點,再上圖對應的是節點 3,4 5,6 2 4 5 7 但是注意到 3,4 和 4 還有 5,6 和 5 不能從重複統計,所以最後統計的長度是 2 3,4 5,6 7 6.所以四根木條在牆上的總投影長...

演算法導論學習筆記 2 歸併排序

今天學習了演算法導論上的歸併排序演算法,並且完成了在紙上寫出偽 以前就學過歸併但是理解的不夠透徹,以前還一直困惑 為什麼明明歸併排序比快排的時間複雜度更穩定,為什麼庫函式不用歸併而用快排,現在知道原因了,因為歸併排序必須開額外的空間,而且空間開銷還比較大,下面介紹演算法 首先,歸併排序用到了分治的思...