Zum Inhalt springen

quicksort


witch doctor

Empfohlene Beiträge

Ich habe hier ein Java Programm, welches den Quicksort ausführt.

Ich habe dazu mal eine kleine Frage. Aber zunächst erstmal das Programm.


package quicksort;

public class quicksorter

{

    private int[] a;

    public void sort(int[] a0)

    {

        a=a0;

        quicksort(0, a.length-1);

    }

    private void quicksort (int lo, int hi)

    {

        int low=lo, high=hi;

        int x=a[(lo+hi)/2];

        //  Aufteilung

        while (low<=high) //Zeiger haben sich noch nicht getroffen

        {    

            while (a[low]<x) low++; 

            while (a[high]>x) high--;


            if (low<=high)

            {

                exchange(low, high); //ruft Tauschfunktion auf

                low++; high--;

            }

        }

        // Rekursion

        if (lo<high) quicksort(lo, high);

        if (low<hi) quicksort(low, hi);

    }


    private void exchange(int i, int j) //Tauschfunktion

    {

        int t=a[i];

        a[i]=a[j];

        a[j]=t;

    }

}    // end class QuickSorter

Eigentlich verstehe ich nur folgende Programmzeile nicht:

if (lo<high) quicksort(lo, high);

if (low<hi) quicksort(low, hi);

Wieso einmal lo<high und low<hi???

Ich hoffe ihr könnt mir helfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da low als unterer Grenzwert hochgezählt und high als oberer Grenzwert bei jedem Tausch runtergezählt wird, dürfen diese nicht miteinander verglichen werden, sondern mit der oberen oder unteren Grenze. Deshalb das inkrementierende low mit dem feststehenden hi und das dekrementierende high mit dem festehenden lo. Diese Werte werden rekursiv in den Quicksort wieder eingebracht und das Sortierfeld dabei immer wieder halbiert, bis es nicht mehr teilbar ist. Es wird zweimal als if-Abfrage rekursiv durchlaufen. Durch die Rekursionsschleife wird zuerst (lo<high) bis zur Unteilbarkeit durchlaufen und danach (low<hi).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...