G
GastXY
Gast
Hallo, habe Probleme bei folgender Aufgabe:
Aufgabe 8.3 (20 Punkte)
Der Sortieralgorithmus Triple Sort arbeitet nach folgendem Prinzip:
1. Sortiere die vorderen zwei Drittel der Folge
2. Sortiere die hinteren zwei Drittel der Folge
3. Sortiere die vorderen zwei Drittel der Folge
Das Sortieren der Teilfolgen erfolgt jeweils rekursiv, zweielementige Folgen werden durch einfachen Vergleich der beiden Elemente sortiert. Einelementige Folgen sind bereits sortiert.
Implementieren Sie analog zur Klasse QuickSort eine Klasse TripleSort, die zwei sort-Methoden enthält: Eine private Methode, die nur in der Klasse TripleSort rekursiv aufgerufen wird und die Grenzen des aktuell betrachteten Array-Bereiches enthält und eine öffentliche Methode, die vom Benutzer aufgerufen werden kann und die private Methode initial aufruft.
Implementieren Sie außerdem eine Klasse TripleSortTest, mit der Sie die Methode testen können.
Hinweis: Der TripleSort operiert analog zum QuickSort direkt auf dem übergebenen Array.
Meine Methode sieht bislang so aus:
wenn ich das Testprogramm starte kommt 1000mal die meldung:
"at TripleSort.triplesort(TripleSort.java:36)"
was kann ich tun?
MfG
Aufgabe 8.3 (20 Punkte)
Der Sortieralgorithmus Triple Sort arbeitet nach folgendem Prinzip:
1. Sortiere die vorderen zwei Drittel der Folge
2. Sortiere die hinteren zwei Drittel der Folge
3. Sortiere die vorderen zwei Drittel der Folge
Das Sortieren der Teilfolgen erfolgt jeweils rekursiv, zweielementige Folgen werden durch einfachen Vergleich der beiden Elemente sortiert. Einelementige Folgen sind bereits sortiert.
Implementieren Sie analog zur Klasse QuickSort eine Klasse TripleSort, die zwei sort-Methoden enthält: Eine private Methode, die nur in der Klasse TripleSort rekursiv aufgerufen wird und die Grenzen des aktuell betrachteten Array-Bereiches enthält und eine öffentliche Methode, die vom Benutzer aufgerufen werden kann und die private Methode initial aufruft.
Implementieren Sie außerdem eine Klasse TripleSortTest, mit der Sie die Methode testen können.
Hinweis: Der TripleSort operiert analog zum QuickSort direkt auf dem übergebenen Array.
Meine Methode sieht bislang so aus:
Code:
public class TripleSort{
public static void sort(int [] a){
int i = 0; //Anfang vordere Zwei-Drittel
int j = (a.length/3)*2; //Ende vordere Zwei-Drittel
int m = (a.length/3); //Anfang hintere Zwei-Drittel
int n = a.length; //Ende hintere Zwei-Drittel
triplesort (a,i,j,m,n);
}
private static void triplesort(int []a, int i,int j, int m, int n){
if (j-i<2){
if (a[i]>a[j]){
int tmp = a[i];
a[i]=a[j];
a[j]=tmp;
}
}
if (n-m<2){
if (a[m]>a[n]){
int tmp= a[m];
a[m]=a[n];
a[n]=tmp;
}
}
j=(j/3)*2;
m=(m/2)*3;
while((j-i>1) || (n-m>1))triplesort(a,i,j,m,n);
}
}
wenn ich das Testprogramm starte kommt 1000mal die meldung:
"at TripleSort.triplesort(TripleSort.java:36)"
was kann ich tun?
MfG