Español
Fuente/ Codesnippets

Nonrekursives QUICKSORT para 4-Byte-Integer-Arrays

 

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  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

601 Views

Untitledvor 0 min.
Erhard Wirth14.06.2024
p.specht30.07.2022
N.Art23.07.2021
Glubbfan19.06.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie