4 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
可以只用SiftUp和SiftDown,因?yàn)橹灰WC滿足堆的性質(zhì)(即每一個(gè)節(jié)點(diǎn)的值比父節(jié)點(diǎn)小/大,比兩個(gè)子節(jié)點(diǎn)大/?。┚涂梢粤?。當(dāng)你改變某個(gè)元素的值之后,僅在這一局部違反了這個(gè)性質(zhì),而在SiftUp或者SiftDown調(diào)整的過(guò)程中,注意“始終只有一個(gè)局部違反這個(gè)性質(zhì)”,直至SiftUp or SiftDown無(wú)法進(jìn)行。

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
一個(gè)由C/C++編譯的程序占用的內(nèi)存分為以下幾個(gè)部分
1、棧區(qū)(stack)— 由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其
操作方式類(lèi)似于數(shù)據(jù)結(jié)構(gòu)中的棧。
2、堆區(qū)(heap) — 一般由程序員分配釋放, 若程序員不釋放 ,程序結(jié)束時(shí)可能由OS回
收 。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類(lèi)似于鏈表,呵呵。
3、全局區(qū)(靜態(tài)區(qū))(static)—,全局變量和靜態(tài)變量的存儲(chǔ)是放在一塊的,初始化的
全局變量和靜態(tài)變量在一塊區(qū)域, 未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另
一塊區(qū)域。 - 程序結(jié)束后由系統(tǒng)釋放。
4、文字常量區(qū) —常量字符串就是放在這里的。 程序結(jié)束后由系統(tǒng)釋放
5、程序代碼區(qū)—存放函數(shù)體的二進(jìn)制代碼。
內(nèi)存里面的堆可以想象成內(nèi)存池,
而數(shù)據(jù)結(jié)構(gòu)里面的堆只是一種數(shù)據(jù)結(jié)構(gòu),用在排序和OS任務(wù)優(yōu)先級(jí)調(diào)度
數(shù)據(jù)結(jié)構(gòu)的 堆和棧 側(cè)重的是數(shù)據(jù)邏輯上的存放,讀取,組織方式。
內(nèi)存堆和棧 是實(shí)實(shí)在在的東西,它具有上面所說(shuō)的屬性,但是實(shí)現(xiàn)的原理 并不一定和數(shù)據(jù)結(jié)構(gòu)中的 堆和棧 有嚴(yán)格的對(duì)應(yīng)。特別是堆的概念。

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
棧:為自動(dòng)存儲(chǔ)而預(yù)留下的內(nèi)存
堆:為動(dòng)態(tài)存儲(chǔ)而預(yù)留下的內(nèi)存
自動(dòng)存儲(chǔ):在函數(shù)中定義的量(沒(méi)有使用指針及new)都為自動(dòng)存儲(chǔ)連續(xù)性
動(dòng)態(tài)存儲(chǔ):使用了new運(yùn)算符來(lái)分配內(nèi)存為動(dòng)態(tài)存儲(chǔ)連續(xù)性
- 4 回答
- 0 關(guān)注
- 1566 瀏覽
添加回答
舉報(bào)