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:
popadA 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
- Flashforge Adventurer 5M Pro 3D nyomtató Teljesen új!
- ÚJ Dell Inspiron 7430 2-in-1 - 14" FHD+ IPS TOUCH 360 / i5-1335U / 16Gb DDR5 / 512Gb PCIe 4.0 / 3 ÉV
- Dell 5820: Intel Xeon W-2135, 64GB DDR4, 256GB NVMe SSD, Nvidia Quadro P600, USB 3.1 C/A, ÁFÁs
- Eladó alig használt benq Zowie xl 2411P kihasználatlanság miatt karcmentes, tökéletes állapotban
- Honor X6a 128GB, Kártyafüggetlen, 1 Év Garanciával