Hirdetés

Keresés

Új hozzászólás Aktív témák

  • axioma

    veterán

    válasz #74220800 #9327 üzenetére

    Argh, a megvan-os hsz-edet figyelmetlenul olvastam, azert benne hagyom mert ha ott insert-alsz, akkor talalsz me'g ebben hasznos infot.

    En azt nem ertem, hogy miert veszed kulon a torlest es a heapify-t... torolsz az _elejerol_ (ami implementaciofuggo, de a vegerol torles csak olcsobb vagy ugyanannyi lehet, mint az elejerol), holott neked az elejen kell a hely, az utolso elemet kene csak odahelyezni es lekuldeni.
    Bocs, java kodban nincs epp keznel, de pythonban ugyanez a kivetel (a tombindexeles ellenere az egy lista, a pop() meg az utolso elemet tavolitja el es adja ertekul):

    print mylist[0]
    if cou==1: # itt van az aktualis meret
    mylist=[]
    cou=0
    else:
    act=mylist.pop()
    cou-=1
    tmp=0
    while (tmp*2+1<cou and mylist[tmp*2+1]>act) or (tmp*2+2<cou and mylist[tmp*2+2]>act):
    if tmp*2+2==cou or mylist[tmp*2+1]>mylist[tmp*2+2]:
    mylist[tmp]=mylist[tmp*2+1]
    tmp=tmp*2+1
    else:
    mylist[tmp]=mylist[tmp*2+2]
    tmp=tmp*2+2
    mylist[tmp]=act

    Egyebkent most hogy nezem a kodod, pont ez a baj! Hiszen az eltavolitas utan lesz egy olyan listad, ami az uj index miatt mar nem is heap! Ez szerintem egy erosen kerulendo koztes allapotkent is... Be kene elore szurni magat az utolso elemet, es arra hivni a heapify-t, de akkor mar egyszerubb ez az on-the-fly modszer (amig nem teszed be, addig csak orzod hasonlitasra, majd a vegleges helyen adod ertekul).

  • #74220800

    törölt tag

    válasz #74220800 #9327 üzenetére

    Megvan! Törlésnél elfelejtettem az uccso elemet az első helyre rakni, igy azzal kezdeni restructure-t.

Új hozzászólás Aktív témák