CLRS 17 2核算法

2021-07-25 22:23:51 字數 1391 閱讀 9735

17.2-1

每個 k

pushpop執行一次copy,那麼使pushpop的 co

st為 2

,1份用來支付本身的操作,另

1 份用於copy。

17.2-2

每次操作的代價都是

3,當

i 不是

2的冪時,支付一美元,信用為

2 美元;否則就支付

i美元,使用信用支付。

由於攤還代價是

3 美元,∑i

=1nc

^i=3

n,由練習17.1-3得 ∑i

=1nc

i<3n

。即信用不會為負。最後的代價是 o(

n)。17.2-3

使用乙個指標記錄最高位 a.

max 是否 1,初始時設為 -1。

increment(a)

i = 0

while i < a.length and

a[i] == 1

a[i] = 0

i = i + 1

if i < a.length

a[i] = 1

// additions to book』s increment start here.

if i > a.max

a.max = i

else

a.max = -1

reset(a)

for i = 0 to a.max

a[i] = 0

a.max = -1

和書上一樣,假設 1 美元用於翻轉某一位,此外還假設更新 a.

max 需要 1 美元。

increment操作,1 美元用於設定某位為 1,1 美元用於信用,因此一共需要 2 美元。

我們還需要 1 美元用於更新 ma

x ,如果 ma

x 增加,放置額外的 1 美元在新的最高位上(如果不增加,就浪費掉吧)。對於重置操作,它操縱的位數最多到達 a.

max ,並且在 a.

max 為 1 的時候,低於 a.

max 的都曾變為 1。將低位歸零的時候使用信用支付,所以只需支付 1 美元在重設 ma

x 上即可。

最後得,對increment操作花費 3 美元,reset操作花費 1 美元,最後得到時間是 o(n)。

演算法導論 CLRS 2 3 7 2 2

2.3 7 其實這道星號題的思路已經在前面幾個習題中給了提示。思路是先用merge sort對陣列公升序排列,然後進行binary search即可,時間複雜度為 t n nlogn logn n logn 演算法分析如下 設二叉搜尋下邊界為lo w 上邊界為hi gh,中間index為mi d 則...

CLRS筆記2 演算法入門

b 1,增量法 incremental b 例 插入排序 insertion sort ruby版本 code def insertion sort a a.each with index do el,i j i 1 while j 0 break if a j el a j 1 a j j 1 e...

演算法導論為何被稱為CLRS

最近在學習演算法導論的時候發現經常被提到clrs這本書,最開始我很疑惑clrs是指哪本,後來發現基本指的就是mit的introduction to algorithms。那麼問題來了,為什麼這麼稱呼呢?去網上查了一下,如演算法導論wiki介紹首段的最後一句所說,原來這個簡寫就是幾位作者,thomas...