| |
|
|
p.specht
| Pour cela Sortieren de 500.000 4-Byte-Zufallsintegers dans XProfan11.2a braucht mon 2.5 GHz calculateur (Profan rechnet dabei seulement sur einem Kern) avec diesem Algorithmus 186 Sekunden. Nostalgie pur ... Pour solche Arraygrößen s'il te plaît qui la ligne avec Localiser 2,2 auskommentieren, sonst peux on sich au cours de qui Zufallsgenerierung une café faire aller. Gruss
Titre de la fenêtre "NONREKURSIVES QUICKSORT"
'Getestet, mais sans Gewähr, P. Specht dans XProfan-11.2a free
Déclarer NumMax&,A&[],Stack1&[],Stack2&[],StackPtr&,HeadPtr&,TailPtr&
declare Pivot&,a&,b&,t&,q&,r&,p&,s&
declare i&,ms1&,sec!
Jump0:
Cls
Imprimer "Wieviele Random Numbers?:";
Contribution NumMax&
Randomiser:i&=0
Tandis que i&<NumMax&
A&[i&]=Tour(100000)
Localiser 2,2:imprimer i&,A&[i&]''''
Inc i&
Endwhile
ms1& = &GetTickCount''''
StackPtr&=0
HeadPtr&=0
TailPtr&=NumMax&-1
Imprimer "Starte Nonrekursives Quicksort...";''''
Jump2:
Tandis que HeadPtr& < TailPtr&
Pivot& = A&[(HeadPtr& + TailPtr&)/2]
a& = HeadPtr&
b& = TailPtr&
Jump1:
Tandis que A&[a&] < Pivot&
inc a&
Endwhile
Tandis que A&[b&] > Pivot&
dec b&
Endwhile
Si a& < b&
t&=A&[a&]
A&[a&]=A&[b&]
A&[b&]=t&
inc a&
dec b&
Goto "Jump1"
EndIf
Si a&=b&
q& = b& - 1
r& = a& + 1
D'autre
q& = b&
r& = a&
EndIf
inc StackPtr&
p& = HeadPtr&
s& = TailPtr&
Si (q&-p&) < (s&-r&)
Stack1&[StackPtr&] = r&
Stack2&[StackPtr&] = s&
HeadPtr& = p&
TailPtr& = q&
D'autre
Stack1&[StackPtr&] = p&
Stack2&[StackPtr&] = q&
HeadPtr& = r&
TailPtr& = s&
EndIf
Endwhile
Si StackPtr& > 0
HeadPtr& = Stack1&[StackPtr&]
TailPtr& = Stack2&[StackPtr&]
dec StackPtr&
Goto "Jump2"
EndIf
' Sortierung fertig
sec!=(&GetTickCount - ms1&)/1000
imprimer:Imprimer "Kontrollausgabe (chaque " + str$(int(NumMax&/30+1))+". Element):"''''
WhileLoop 0,NumMax&-1,int(1+NumMax&/30)
Imprimer A&[&Boucle];
Endwhile:imprimer''''
imprimer:imprimer "Dauer des reinen Sortiervorgangs qui "+str$(NumMax&)+" Zufallsvariablen: "+str$(sec!)+" Sek."
imprimer:imprimer "Weiterer Test avec beliebiger bouton..."
WaitInput
Goto "Jump0"
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 11.04.2021 ▲ |
|
|
|