| |
|
|
p.specht
|
Titre de la fenêtre "NONREKURSIVES FLOATWERTE-QUICKSORT"
Déclarer NumMax&,A![],Stack1&[],Stack2&[],StackPtr&,HeadPtr&
Déclarer TailPtr&,Pivot!,a&,b&,t!,q&,r&,p&,s&,i&,ms1&,sec!: J0:
Cls:Imprimer "Wieviele Random Numbers? ";:Contribution NumMax&
Randomiser:i&=0:Tandis que i&<NumMax&:A![i&]=Tour()*100000:Inc i&:Endwhile
ms1& = &GetTickCount:StackPtr&=0:HeadPtr&=0:TailPtr&=NumMax&-1
Imprimer "Starte Nonrekursives Quicksort...";: J2:
Tandis que HeadPtr& < TailPtr&:Pivot!=A![(HeadPtr&+TailPtr&)/2]
a&=HeadPtr&:b&=TailPtr&: J1:
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 "J1"
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 "J2":EndIf :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 "Sort-la durée pour "+str$(NumMax&)+" Variablen: "+\
str$(sec!)+" Sek.":imprimer:imprimer "Taste...":WaitInput :Goto "J0"
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 14.04.2021 ▲ |
|
|
|