| |
|
|
p.specht
| Für el Sortieren de 500.000 4-Byte-Zufallsintegers en XProfan11.2a braucht mein 2.5 GHz Rechner (Profano rechnet esta sólo en una Kern) con diesem Algorithmus 186 Sekunden. Nostalgie pur ... Für solche Arraygrößen Por favor, el Línea con Localizar 2,2 auskommentieren, sonst puede ser se während el Zufallsgenerierung una Café hacer ir. Gruss
Título de la ventana "NONREKURSIVES QUICKSORT"
'Getestet, aber sin Gewähr, P. Pájaro carpintero en XProfan-11.2a free
Declarar NumMax&,A&[],Stack1&[],Stack2&[],StackPtr&,HeadPtr&,TailPtr&
declarar Pivot&,a&,b&,t&,q&,r&,p&,s&
declarar i&,ms1&,sec!
Jump0:
Cls
Imprimir "Wieviele Random Numbers?:";
Entrada NumMax&
Selección aleatoria:i&=0
Mientras que i&<NumMax&
A&[i&]=Rnd(100000)
Localizar 2,2:imprimir i&,A&[i&]''''
Inc i&
EndWhile
ms1& = &GetTickCount''''
StackPtr&=0
HeadPtr&=0
TailPtr&=NumMax&-1
Imprimir "Starte Nonrekursives Quicksort...";''''
Jump2:
Mientras que HeadPtr& < TailPtr&
Pivot& = A&[(HeadPtr& + TailPtr&)/2]
a& = HeadPtr&
b& = TailPtr&
Jump1:
Mientras que A&[a&] < Pivot&
inc a&
EndWhile
Mientras que A&[b&] > Pivot&
dec b&
EndWhile
If a& < b&
t&=A&[a&]
A&[a&]=A&[b&]
A&[b&]=t&
inc a&
dec b&
Goto "Jump1"
EndIf
If a&=b&
q& = b& - 1
r& = a& + 1
Más
q& = b&
r& = a&
EndIf
inc StackPtr&
p& = HeadPtr&
s& = TailPtr&
If (q&-p&) < (s&-r&)
Stack1&[StackPtr&] = r&
Stack2&[StackPtr&] = s&
HeadPtr& = p&
TailPtr& = q&
Más
Stack1&[StackPtr&] = p&
Stack2&[StackPtr&] = q&
HeadPtr& = r&
TailPtr& = s&
EndIf
EndWhile
If StackPtr& > 0
HeadPtr& = Stack1&[StackPtr&]
TailPtr& = Stack2&[StackPtr&]
dec StackPtr&
Goto "Jump2"
EndIf
' Sortierung fertig
sec!=(&GetTickCount - ms1&)/1000
imprimir:Imprimir "Kontrollausgabe (cada " + str$(int(NumMax&/30+1))+". Element):"''''
WhileLoop 0,NumMax&-1,int(1+NumMax&/30)
Imprimir A&[&Loop];
EndWhile:imprimir''''
imprimir:imprimir "Dauer des reinen Sortiervorgangs el "+str$(NumMax&)+" Zufallsvariablen: "+str$(sec!)+" Sek."
imprimir:imprimir "Weiterer Test con beliebiger Taste..."
WaitInput
Goto "Jump0"
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 11.04.2021 ▲ |
|
|
|