AuK/Teile und Herrsche 1 SS10/JavaQuick

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
== Quicksort in Java ==

'''Der Algorithmus'''

<code id="4bbdf8e39a9bd">
public Object Quicksorter ()
{
    private int[] a;
    private int n;

    public void sort(int[] values)
    {
        a=values;
        n=a.length;
        quicksort(0, n-1);
        for(int i=0; i < a.length; i++) System.out.print(a[i]+ (i < a.length-1 ? "," : ""));
    }

    private void quicksort (int lo, int hi)
    {
        int i=lo, j=hi;
        int x=a[(lo+hi)/2];

        //  Aufteilung
        while (i<=j)
        {    
            while (a[i]<x) i++; 
            while (a[j]>x) j--;
            if (i<=j)
            {
                exchange(i, j);
                i++; j--;
            }
        }

        // Rekursion
        if (lo<j) quicksort(lo, j);
        if (i<hi) quicksort(i, hi);
    }

    private void exchange(int i, int j)
    {
        int t=a[i];
        a[i]=a[j];
        a[j]=t;
    }
     
    return this;
}    

</code>

<eval id="4bbf141066923">
QuickSort = Quicksorter ();
QuickSort.sort(new int[] {1,42,5,23,6,34});
</eval>

Quelle: [http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/quick/quick.htm FH-Flensburg]