Aktív témák

  • P.H.

    senior tag

    Gyors o(log n) rendezési algoritmus 64 bites lebegőpontos számokra:

    inicializálás:
    kimenet:
    ESI: az ideiglenes,32 bites elemekből álló munkatömb címe
    EDI: a 32 bites munkatömb mérete
    bemenet:
    EAX: a 64 bites számok tömbjére mutató pointer
    EDX: az értékek száma a tömbben
    ESI: az ideiglenes,32 bites elemekből álló munkatömb címe
    lea edx,[eax+edx*08h]
    fldz
    mov ecx,esi
    xor edi,edi
    @insert:
    mov [ecx],edx
    sub edx,08h
    lea ebp,[edi+01h]
    cmp edx,[esp+_EAX]
    fstp st(0)
    jbe @return
    add edi,01h
    fld qword ptr [edx]
    @moveup:
    lea ecx,[esi+ebp*04h]
    shr ebp,01h
    mov ebx,[esi+ebp*04h]
    jz @insert
    fcom qword ptr [ebx]; fnstsw ax; sahf
    jae @insert
    mov [ecx],ebx
    jmp @moveup
    @return:

    A következő legkisebb elem lehívása:
    kimenet:
    EDX: a legkisebb elem pozíciója az eredeti tömmben
    EDI: a 32 bites munkatömb új mérete
    bemenet:
    EAX: a 64 bites számok tömbjére mutató pointer
    EDI: a 32 bites munkatömb jelenlegi mérete
    ESI: az ideiglenes,32 bites elemekből álló munkatömb címe
    or edx,-1
    sub edi,01h
    js @invalid
    pushad
    mov edx,[esi+01h*04h]
    mov ebp,00000001h
    mov ecx,[esi+edi*04h+04h]
    fld qword ptr [edx]
    sub edx,eax
    fld qword ptr [ecx]
    mov [esp+_EDX],edx
    @down:
    mov edx,ebp
    lea eax,[esi+ebp*(04h*2)]
    add ebp,ebp
    cmp ebp,edi
    ja @insertdown
    mov ebx,[eax+00h]
    mov edx,[eax+04h]
    jz @child
    fld qword ptr [edx]
    fcomp qword ptr [ebx]; fnstsw ax; sahf
    cmovb ebx,edx {cmovb = cmovc}
    adc ebp,00h
    @child:
    fcom qword ptr [ebx]
    mov edx,ebp
    fnstsw ax
    shr edx,01h
    sahf
    mov [esi+edx*04h],ebx
    ja @down
    @insertdown:
    fstp st(0)
    mov [esi+edx*04h],ecx
    popad
    sar edx,03h
    @invalid:
    popad

    A rendezés végét a negatív (-1) visszaadott pozíció jelzi, nem szükséges tesztelni a lépések számát.

    [ Szerkesztve ]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

Aktív témák