Français
Source/ Codesnippets

Nonrekursives QUICKSORT pour 4-Byte-Integer-Arrays

 

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  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

597 Views

Untitledvor 0 min.
Erhard Wirth14.06.2024
p.specht30.07.2022
N.Art23.07.2021
Glubbfan19.06.2021
plus...

Themeninformationen

cet Thema hat 1 participant:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie