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

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Sameiningarröðun - Wikipedia, frjálsa alfræðiritið

Sameiningarröðun

Úr Wikipediu, frjálsa alfræðiritinu

Mynd:Merge sort algorithm diagram.svg
Sameiningarröðun sem raðar fylki af 7 heiltölum. Myndin sýnir skrefin sem maður myndi gera (frá toppi til botns).

Í tölvunarfræði, er röðunarreiknirit sem hetir Sameiningarröðun(e. mergesort) og er O(n log n). Þetta er algrímur sem er stöðugur, sem þýðir að hann heldur jafnt því sem er sett inn og því sem kemur raðað út. Þetta er útgáfa af deili- og drottnunarreiknirit og þessi algrímur var fundinn upp af John von Neumann árið 1945.

[breyta] Sameiningarröðun

Sameiningarröðun nýtir þann eiginleika hversu auðvelt það er að sameina tvo raðaða lista. Röðunin byrjar á að bera saman fyrstu tvö stökin í hvorum lista fyrir sig og afritar minna stakið (eða stærra ef raða á stærsta stakinu fyrst) í nýjan lista. Heldur síðan áfram og ber þá fyrsta stakið í listanum sem var með hærra stak í fyrsta samanburðinum við annað stakið í seinni listanum.

Röðunaraðferðin býr til þessa tvo röðuðu lista með því að skipta upprunalega listanum sem á að raða í tvennt, síðan hvorum þessarra nýju lista í tvennt aftur og svo framvegis þangað búið er að búta upprunalega listann niður í lista sem einungis geyma eitt stak hver. Að því loknu eru þessir einingalistar sameinaðir tveir og tveir í einu og mynda þá raðaðan lista með tveimur stökum. Því næst eru þeir listar sameinaðir og svo framvegis þangað til allir undirlistar hafa verið sameinaðir í heilan fullraðaðan lista.

[breyta] Algrímur fyrir Sameiningarröðun

Sameiningarröðun virkar svona:

  1. Fyrst þá skiptir maður óraðaða listanum í 2 undirlista
  2. Skiptir síðan þessum 2 undirlistum endurkvæmnt þangað til að listarnir eru af lengd 1, þá skilum við einingalistanum til baka
  3. Sameinum síðan þessa 2 lista í einn raðan lista.

Sameiningarröðun notar venjulega 2 hugmyndir til að keyra hraðar á keyrslutíma:

  1. Að raða litlum lista tekur færri skref heldur en að raða stórum lista.
  2. Færri skref eru nauðsynleg til að búa til raðan lista frá 2 röðuðum listum heldur en 2 óröðuðum listum. T.d þú þarf aðeins að fara í gegnum raðaðan lista einu sinni ef hann hefur þegar verið raðaður áður.

Dæmi: Hvernig maður getur notað Sameiningarröðun til að raða lista af heiltölum sem eru í fylki:

Mynd:Merge sort animation2.gif
Dæmi Hvernig Sameiningarröðun raðar lista af óröðuðum punktum.

Við getum haft fylki A sem er með vísir sem er frá A1 til An. Við getum notað Sameiningarröð til að raða A(A1 til Amiðja) og A(miðja+1 til An) - þar sem miðjan er heiltölu hlutinn af (A1 til An)/2. Þegar þessi 2 helmingar eru skilaðir til baka, þá hafa þeir verið raðaðir. Þá er hægt að sameina þá í einn lista til að búa til raðað fylki.

Hérna er dæmi með einföldum sauðakóða, hvernig þessi algrímur lítur út:

function mergesort(m)
    var list left, right, result
    if length(m) ≤ 1
        return m
    else
        var middle = length(m) / 2
        for each x in m up to middle
            add x to left
        for each x in m after middle
            add x to right
        left = mergesort(left)
        right = mergesort(right)
        result = merge(left, right)
        return result

Það eru til margar útgáfur af Sameiningarröðun, hérna er dæmi um einfalda útgáfu:

function merge(left,right)
    var list result
    while length(left) > 0 and length(right) > 0
        if first(left) ≤ first(right)
            append first(left) to result
            left = rest(left)
        else
            append first(right) to result
            right = rest(right)
    if length(left) > 0 
        append rest(left) to result
    if length(right) > 0 
        append rest(right) to result
    return result

[breyta] Heimildir


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 -