Hallo zusammen,
ich muss für die Uni eine Aufgabe erledigen.
Ich soll eine Klasse schreiben die eine Generische Liste mit MergeSort sortiert.
Ich bekomme aber beim rekursiven Aufruf der Methode einen Fehler.
The method mergeSort(Liste<T>, Comparator<? super T>, int, int) in the type ListeAlgo is not applicable for the arguments (DVLListe<T>, Comparator<capture#2-of ? super T>, int, int)
Mein Code Sieht so aus!
[Java]
import Aufg1.DVLListe;
import Aufg1.Liste;
import java.util.Comparator;
public class ListeAlgo{
public static <T> void mergeSort(Liste<T> liste, java.util.Comparator<? super T> comp){
mergeSort(liste, comp, 0, liste.size() - 1);
}
public static <T> void mergeSort(Liste<T> liste, Comparator<? super T> comp, int il, int ir){
if(ir - il < 1){
return;
}
DVLListe<T> neueListe = new DVLListe<T>();
for(int i = il; i <= ir; i++){
neueListe.addLast(liste.get(i));
}
int mid = (ir - il) / 2;
mergeSort(neueListe, comp, 0, mid); // hier kommt der Fehler
mergeSort(neueListe, comp, mid + 1, ir - il); // hier auch
int i1 = 0;
int i2 = mid + 1;
for(int i = 0; i1 <= mid || i2 <= ir - il; i++){
if(i1 <= mid && i2 <= ir - il){
T t1 = neueListe.get(i1);
T t2 = neueListe.get(i2);
if(comp.compare(t1, t2) < 0){
liste.set(il + i, t1);
i1++;
} else {
liste.set(il + i, t2);
i2++;
}
} else {
if(i1 <= mid){
liste.set(il + i, neueListe.get(i1));
i1++;
} else {
liste.set(il + i, neueListe.get(i2));
i2++;
}
}
}
}
}
[/Java]
Wäre super wenn mir jemand einen Denkanstoss geben könnte !
Vielen Dank im voraus.
ich muss für die Uni eine Aufgabe erledigen.
Ich soll eine Klasse schreiben die eine Generische Liste mit MergeSort sortiert.
Ich bekomme aber beim rekursiven Aufruf der Methode einen Fehler.
The method mergeSort(Liste<T>, Comparator<? super T>, int, int) in the type ListeAlgo is not applicable for the arguments (DVLListe<T>, Comparator<capture#2-of ? super T>, int, int)
Mein Code Sieht so aus!
[Java]
import Aufg1.DVLListe;
import Aufg1.Liste;
import java.util.Comparator;
public class ListeAlgo{
public static <T> void mergeSort(Liste<T> liste, java.util.Comparator<? super T> comp){
mergeSort(liste, comp, 0, liste.size() - 1);
}
public static <T> void mergeSort(Liste<T> liste, Comparator<? super T> comp, int il, int ir){
if(ir - il < 1){
return;
}
DVLListe<T> neueListe = new DVLListe<T>();
for(int i = il; i <= ir; i++){
neueListe.addLast(liste.get(i));
}
int mid = (ir - il) / 2;
mergeSort(neueListe, comp, 0, mid); // hier kommt der Fehler
mergeSort(neueListe, comp, mid + 1, ir - il); // hier auch
int i1 = 0;
int i2 = mid + 1;
for(int i = 0; i1 <= mid || i2 <= ir - il; i++){
if(i1 <= mid && i2 <= ir - il){
T t1 = neueListe.get(i1);
T t2 = neueListe.get(i2);
if(comp.compare(t1, t2) < 0){
liste.set(il + i, t1);
i1++;
} else {
liste.set(il + i, t2);
i2++;
}
} else {
if(i1 <= mid){
liste.set(il + i, neueListe.get(i1));
i1++;
} else {
liste.set(il + i, neueListe.get(i2));
i2++;
}
}
}
}
}
[/Java]
Wäre super wenn mir jemand einen Denkanstoss geben könnte !
Vielen Dank im voraus.