See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Krūva - Vikipedija

Krūva

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.

Krūva (Heap) tai panaši į dvejetainį paieškos medį informatikoje naudojama duomenų struktūra.

Krūva galėtų būti vadinama dvejetainiu paieškos medžiu su dviem sąlygomis:

  1. Tai visada yra užbaigtas (pilnas ir visi lapai yra h arba h-1 aukštyje) medis
  2. Kiekvienas viršūnės vaikas tenkina pasirinktąją palyginimo operaciją su viršūne (negalioja sąlyga apie kairįjį ir dešinįjį dvejetainio medžio vaiką)

Turinys

[taisyti] Operacijos

[taisyti] Įterpimas

Įterpimas į krūvą
Įterpimas į krūvą

Norėdami įterpti elementą į krūvą, mes pridedame jį į žemiausią krūvos lygį ir sukeičiame vaiką su tevu, jei jie netentina mūsų Krūvos sąlygos. Tokio algoritmo sudėtingumas yra O (log n)

Pavyzdžiui, mūsų krūvoje gali būti Krūvoje apibrėžta savybė, kad šaknis yra didesnė ar lygi vaikui.

     11
    /  \
   5    8
  / \  /
 3  4 X

Mes norime įterpti 15 į krūvą. Sakykime 15 bus X pozicijoje. Įterpę palyginame 15 su tėvu – deja, jis neatitinka mūsų krūvos sąvybės, todėl sukeičiame jį su tėvu:

     11
    /  \
   5    15
  / \  /
 3  4 8

Palyginame dar kartą – medis visdar netenkina mūsų sąlygos (11 < 15). Sukeičiame ir gauname:

     15
    /  \
   5    11
  / \  /
 3  4 8

Šitoks medis mūsų sąlygą tenkina.

[taisyti] Pašalinimas

Vaizdas:Pašalinimas iš krūvos.jpg
Pašalinimas iš krūvos

Pašalindami, mes pakeičiame nereikalingą elementą, paskutiniu žemiausio lygio lapu ir tikriname krūvos teisingumą. Jei mūsų krūva neatitinka reikalavimo, sukeičiame viršūnę su vaiku, kol negausime mus tenkinančios krūvos.

Pavyzdžiui, mūsų krūvoje gali būti Krūvoje apibrėžta sąvybę, kad šaknis yra didesnė ar lygi vaikui.

     11
    /  \
   5    8
  / \  
 3  4 

Pašaliname 11 ir pakeičiame 4

      4
    /   \
   5     8
  / 
 3  

Kaip matome, medis neatitinka reikalavimų, todėl pakeičiame 4 jo (labiausiai mūsų krūvos savybę atitinkančiu) vaiku

      8
    /   \
   5     4
  / 
 3

Toks medis tenkina mūsų reikalavimus.

Reikia pabrėžti, kad krūvos sąvybė yra labai susijusi su naudojama palyginimo operacija.

[taisyti] Realizacija

Būtų labai sunku realizuoti Krūvą dvejetainiu medžiu, nes, kaip matėme, įterpimo ir pašalinimo operacijoms reikalinga žinoti, koks yra paskutinis lapas.

Realizacijos masyvu pavyzdys
Realizacijos masyvu pavyzdys

Patogiau ir populiariau Krūvą realizuoti masyvu, saugant elementus tokia tvarka: šaknis yra pirmas elementas, toliau: kairysis šaknies vaikas, dešinysis šaknies vaikas, kairiojo šaknies vaiko kairysis vaikas... Jei, pavyzdžiui, viršūnė turi tik kairįjį vaiką, laukelis sekantis paskui tą vaiko elementą paliekamas tuščias. Taip realizuotoje krūvoje labai lengvai galima surasti paskutinį elementą bei įterpti naują.

[taisyti] Taikymas

Būdas, kuriuo duomenys yra organizuoti krūvoje, leidžia efektyviai realizuoti prioritetų eilės operacijas. Ši duomenų struktūra taip pat naudojama efektyviame krūvos rikiavimo algoritme.


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -