演算法導論(一)Peak Finding

2021-10-06 18:48:04 字數 1030 閱讀 8765

問題描述

有乙個一維的向量,對於向量的中間位置元素來說,如果數值大於等於兩邊相鄰位置元素的數值,則被認為是乙個peak,對於向量邊界位置元素來說,則只需大於等於一邊相鄰位置元素的數值就好。需要輸出給定向量的乙個peak。

如果條件是大於則可能不存在peak

演算法

1.最直接的演算法:從左到右遍歷,時間複雜度為θ(n

)\theta(n)

θ(n)

2.利用分治思維的演算法:

if a[n/2]時間複雜度為θ

\theta

θ(log2

n)問題描述

有乙個二維的向量,如果某位置數值大於等於四鄰域位置元素(邊界只有三個或兩個可比較的值)的數值,則被認為是乙個peak。需要輸出給定向量的乙個peak。

演算法

1.貪心ascent演算法

時間複雜度為θ(n

2)

\theta(n^2)

θ(n2

)2.利用分治思維的演算法:

min = 0;max = m;

pick a column j = (min+max)/2;

while true

find the position(i, j) of the maximum of column j

if (i,j-1)>(i,j)

max = j;

pick colum j = (min+max)/2;

else if (i, j+1)>(i,j)

min = j;

pick colum j = (min+max)/2;

else

return (i,j);

時間複雜度為θ

\theta

θ(nlog2

m),其中n表示行數,m表示列數

演算法導論學習(一)

插入排序演算法 ex 8 9 21 6 1 1.1 9 21 6 8 2.1 6 21 9 8 3.1 6 8 9 21 4.1 6 89 21 5.1 6 89 21 歸併排序演算法 ex 8 9 21 6 1 1.8 9 21 6 1 2.8 9 21 6 1 3.8 9 21 1 6 4.8 ...

《演算法導論》筆記一

看 introduction to algorithms,second editon 裡面提到插入排序和選擇排序,這兩個演算法的時間複雜度是一樣的。比較這兩個演算法的時候,我發現其實它倆是一回事。插入排序是把新元素插入到已經排好了序的序列裡,我們知道執行當前操作需要插入的數字 而在選擇排序中,需要插...

演算法導論 一 演算法基礎

迴圈不變式主要用來幫助我們理解程式的正確性。迴圈不變式的三條性質 初始化 迴圈的第一次迭代之前,它為真。保持 如果迴圈的某次迭代之前它為真,那麼下次迭代之前它仍為真。終止 再迴圈終止時,可驗證演算法的正確性。偽 的重要性在於它可以簡潔地表達出演算法的本質 縮排代表塊結構 採用縮排代表塊結構可以大大提...