Hi!
Ich muss eine (zyklische)DoppeltVerketteListe mit MergeSort sortieren !
Das ist mein Kod bisher:
Input:
output:
Die Idee von split-methode geht theoretisch glaube ich aber wenn ich das programm probiere dann bekomme ich mehr output als ich erwarte.
Meine Fragen sind :
Ist die Funktion split richtig , und nach jedem rekursiven aufruf von split(), wird marge() aufgerufen, also ich kann momentan nur nach jedem aufruf 2 elemente zusammenbringen.
Wie tue ich dass ich alle elemente wieder zusammen mache ?
Information:
Die Klasse ListElement hat einen pointer ListElement next und einen pointer ListElement prev.
Die Klasse DoublyLinkedList ist nur der Kopf der Liste, drinne hat sie einen ListElement first.
Hifft mir bitte, ich brauche es nubedingt !
Ich muss eine (zyklische)DoppeltVerketteListe mit MergeSort sortieren !
Das ist mein Kod bisher:
Java:
public class Sorter {
public DoublyLinkedList mergesort(DoublyLinkedList in, int numOfElements) {
in.first = split(in.first, 1,numOfElements);
return in;
}
private ListElement split(ListElement first, int l, int r){
if(l<r){
int m = (l+r)/2;
ListElement left = first;
ListElement right = first;
for(int i=1;i<=m;i++){
right = right.next;
}
ListElement r_left = split(left,l,m);
ListElement r_right = split(right,m+1,r);
return merge(r_left,r_right);
}
return first;
}
private ListElement merge(ListElement left, ListElement right){
System.out.println("left="+left+" right="+right);
return right;
}
}
Code:
1
2
3
4
5
6
Code:
left=1 right=2
left=2 right=3
left=4 right=2
left=2 right=3
left=3 right=3
Meine Fragen sind :
Ist die Funktion split richtig , und nach jedem rekursiven aufruf von split(), wird marge() aufgerufen, also ich kann momentan nur nach jedem aufruf 2 elemente zusammenbringen.
Wie tue ich dass ich alle elemente wieder zusammen mache ?
Information:
Die Klasse ListElement hat einen pointer ListElement next und einen pointer ListElement prev.
Die Klasse DoublyLinkedList ist nur der Kopf der Liste, drinne hat sie einen ListElement first.
Hifft mir bitte, ich brauche es nubedingt !
Zuletzt bearbeitet von einem Moderator: