D
Den_nis
Gast
Moin moin!
Meine Gruppe hat als Auftrag bekommen, ein Quicksort-Algorithmus zu programmieren und da ich derjenige bin, der momentan nichts zu tun hatte, fiel die Aufgabe mir zu. Dachte, dass sei nicht so kompliziert, aber nun ja.
Ich habe dann mal bei euch im Forum, bei google und bei Wikipedia gesucht und bin schlußendlich auf diesen (siehe unten) Quellcode gestoßen, denn ich irgendwie mit einbauen möchte. Ich habe jetzt aber das Problem, dass ich einige Dinge hierbei nicht verstehe und da bisher keine zufriedenstellende Antwort gefunden habe...
1. Was besagt die Zeile this.a=a; - wozu ist dieser Schritt gut.
1.1 Benötige ich das überhaupt, wenn ich mit Array-Labels arbeite, deren Menge bereits durch ein Variable "Anzahl" geregelt ist?
2. Was besagt hinter den beiden While-Schleifen dieses merkwürdige I++ bzw j--
3. n=a.length <- wozu ist das im Quelltext drinne? Ich habe da den Sinn nicht ganz entnehmen können
T'schuldigung falls das dumme Fragen sind, aber wir sind alle nach nicht allzu lange mit Java beschäftigt und haben bisher hauptsächliche theoretische Kenntnisse erlangt (Programmiert haben wir bisher eher Klein-Kram, wie etwa einen Geld-Umrechner). Würde mich trotzdem über Antworten freuen
Quelle:
http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/quick/quick.htm
Meine Gruppe hat als Auftrag bekommen, ein Quicksort-Algorithmus zu programmieren und da ich derjenige bin, der momentan nichts zu tun hatte, fiel die Aufgabe mir zu. Dachte, dass sei nicht so kompliziert, aber nun ja.
Ich habe dann mal bei euch im Forum, bei google und bei Wikipedia gesucht und bin schlußendlich auf diesen (siehe unten) Quellcode gestoßen, denn ich irgendwie mit einbauen möchte. Ich habe jetzt aber das Problem, dass ich einige Dinge hierbei nicht verstehe und da bisher keine zufriedenstellende Antwort gefunden habe...
1. Was besagt die Zeile this.a=a; - wozu ist dieser Schritt gut.
1.1 Benötige ich das überhaupt, wenn ich mit Array-Labels arbeite, deren Menge bereits durch ein Variable "Anzahl" geregelt ist?
2. Was besagt hinter den beiden While-Schleifen dieses merkwürdige I++ bzw j--
3. n=a.length <- wozu ist das im Quelltext drinne? Ich habe da den Sinn nicht ganz entnehmen können
T'schuldigung falls das dumme Fragen sind, aber wir sind alle nach nicht allzu lange mit Java beschäftigt und haben bisher hauptsächliche theoretische Kenntnisse erlangt (Programmiert haben wir bisher eher Klein-Kram, wie etwa einen Geld-Umrechner). Würde mich trotzdem über Antworten freuen
Code:
public class QuickSorter
{
private int[] a;
private int n;
public void sort(int[] a)
{
this.a=a;
n=a.length;
quicksort(0, n-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;
}
} // end class QuickSorter
Quelle:
http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/quick/quick.htm