線段樹為什麼要開四倍空間

2021-07-02 12:47:28 字數 635 閱讀 8276

**: 

最近在看《具體數學》,這篇當做是乙個練習吧。

假設我們用乙個陣列來頭輕腳重地儲存乙個線段樹,根節點是1,孩子節點分別是2n, 2n+1, 那麼,設線段長為l(即[1..l+1))

設樹的高度為h,對h,有:h(

l)={

1,1+

h(⌈l

2⌉),

l = 1

l > 1

這是乙個很簡單的遞迴式,並用公式3.11逐次代換,就等到h(

l)=k

+h(⌈

l2k⌉

),其中

k 是滿足

2k≥l

的最小值

所以h(l

)=⌈lg

l⌉+1.

所以顯然所需空間為2h

−1==

≤=2⌈

lgl⌉+

1−12

×2⌈lg

l⌉−1

2×2(

l−1)

−1,l

≥24l

−5,l

≥2-- eof --

為什麼要開此blog

blog就是web log,一般就是站在網際網路的高度,來總結一下經驗,看法。因為,本人年紀青青,發表意見也沒有人看,就算有意見要發表,那這個意見的水平,都算不上差強人意。所以,這blog也頂多算是,個人的學習日誌。看到我那名字,就知道在讀的是什麼樣的學校,因為你更本就對cjlu沒印象。說了這麼多,...

四 為什麼要物件導向

面向過程和計算機如影隨形,從計算機誕生之日起,面向過程一直佔主導地位。c語言 作業系統 協議棧 驅動系統 都是面向過程的代表。為什麼會有物件導向誕生並流行呢?面向過程是可以看作是流水線,那麼流水線有個缺點 流水和原料是相對固定的,擴充套件起來很麻煩。比如啤酒生產線,操作的原來是啤酒原料,生產的步驟是...

為什麼要上大四???why

即將要上大四了,最近一直在思考,畢業證對於我有什麼作用呢?我從來不忌諱表露自己的觀點,哪怕這個觀點是錯誤的。現在這個觀點,想必又要激起無數人對我的責罵吧?可是畢業證它到底是啥?為什麼它那麼重要?為什麼大家都堅持白白交上一年的學費,耗上一年時間,然後光榮的畢業,拿到所謂為之奮鬥四年的畢業證!可是我不想...