eigener Mergesort auf generischen Typen mit Comparator

X

Xuri0

Gast
Hallo Leute,
Ich dachte ich komme vorerst damit durch hier nur zu lesen, jedoch sitzte ich nun schon seit 2 Tagen an einer für mich einfach unlösbaren Aufgabe.
Es geht darum, auf einer Liste, selber Mergesort zu implementieren und zwar so, dass der Aufwand bei n*log(n) bleibt.
Das ist ja auf Listen eher unmöglich. Also wird die generische Liste in ein generisches Array überführt.
Ich hab jetzt nur riesige Problem mit Comparable, Comparator, compareTo und compare Sachen.

Ist nebenbei eine HA für Informatik 2 Sem., wollte das eigentlich allein hinbekommen, aber da heute Abend Abgabe ist musste ich jetzt fragen.

Habe mal mein Projekt angehangen, es geht um die LinkedList.java , die LinkedTest.java sollte dann durchlaufen können.

- Danke und Grüße
 

Anhänge

  • 02.zip
    14,1 KB · Aufrufe: 11
X

Xuri0

Gast
Wie wäre es, wenn du dein Problem mal genauer beschreibst. Nicht alle von uns haben zu Hause eine Glasskugel stehen. ;-)

Ich habe auch kein, wenn ich auch nur halbwegs wüsste wo ich bei den beschriebenen Anweisungen irgendwo einen Fehler drin habe würde ich hier nicht fragen. Haben leider keine Einführung zu Comparator und Comparable bekommen. Habe mithilfe von Eclipse und einigen Onlinebeispielen halt alles so hinbasteln können wie es jetzt ist.
Aber kommen beim Ausführen halt noch Fehler, die sich auf die compareTo Funktion beziehen, aber was dabei oder in der Verwendung falsch läuft weiss ich nicht.

Die Test.java muss halt durchlaufen und die vorallem es endlich schaffen, dass die eigentliche LinkedList.java die Liste in ein Object Array zu formt, dieses zu sortieren und dass dann wieder als "neue" Liste auszugeben.

Wenn man die .compareTo leer lässt und lediglich return 0 setzt, kann das Programm die Liste und Mergesort wenigstens ausgeben, aber wird halt nichts getauscht.
 

Meldanor

Bekanntes Mitglied
Implementiere bei deiner Klasse ListeEle das Interface Comparable<T> und füge dann die Funktion:
Java:
    @Override
    public int compareTo(T comparedObject){

       return ((Comparable)(comparedObject)).compareTo(element);
    }
hin zu.

Schau dir an, was compareTo je nach Vergleichsobject zurückgibt, und dann kannste dich an Mergesort wagen.

Du kannst auch einfach
Collections.sort(deineListe);
machen, wenn deine Liste das Interface Comparable implementiert hat. das nutzt dann auch Mergesort zum sortieren :D
 
X

Xuri0

Gast
Implementiere bei deiner Klasse ListeEle das Interface Comparable<T> und füge dann die Funktion:
Java:
    @Override
    public int compareTo(T comparedObject){

       return ((Comparable)(comparedObject)).compareTo(element);
    }
hin zu.

Schau dir an, was compareTo je nach Vergleichsobject zurückgibt, und dann kannste dich an Mergesort wagen.

Du kannst auch einfach
Collections.sort(deineListe);
machen, wenn deine Liste das Interface Comparable implementiert hat. das nutzt dann auch Mergesort zum sortieren :D
Dürfte ich .sort nutzen, hätte ich dies getan.
compareTo gibt ein int <= 0 == 0 oder >= 0 zurück ... wusste ich schon vorher. Hilft mir aber nicht, trägt zumidnest nicht zu meinem Verständniss bei.
 

Meldanor

Bekanntes Mitglied
Ok, dann versteh ich dein Problem nicht.
Versteht du MergeSort allgemein nicht
oder
Verstehst du nicht, wie man das Comparable oder den Comperator benutzt?
oder
Was ganz anderes?
 
X

Xuri0

Gast
Ok, dann versteh ich dein Problem nicht.
Versteht du MergeSort allgemein nicht
oder
Verstehst du nicht, wie man das Comparable oder den Comperator benutzt?
oder
Was ganz anderes?

Ich verstehe Comparable und Comperator nicht.
Weis nicht so richtig wann ich das wo implementieren muss, da hilft mir Eclipse aber halbwegs durch.
Vorallem ist mir auch rätselhaft, warum ich bei mergesort das auch so dumm dieses cmp (Comparator<T> cmp) immer übergeben muss und was das dann soll.
So wie ich denke ist cmp ja der int wert, welcher aus cmp.compare(T o1, T o2) resultieren würde.

Aber ich habe auch kA ob und wo, und auch nicht warum, ich nicht einfach compare nutzen kann.
Das Wichtigste ist aber halt: Was muss ich denn jetzt machen, damit compare auf den generischen Typen läuft. Ich muss irgendwie mit @override benutzen und dann die compare methode definieren. Aber in der LinkesList.java oder in der ListElem.java?
Was muss dann darein, hatte es selber schon ewig versucht und eben nochmal in dein Beispiel alles möglich eingesetzt aber es geht nach wie vor nicht.


EDIT:
Habe das eigentlich so verstanden, dass der Quellcode von dir in die ListElem.java rein müsste.
Aber Fehlerfrei geht das nur so:
Java:
	 public int compareTo(T comparedObject){
	 
	       return ((Comparable)(comparedObject)).compareTo(this);
	    }
Dann funktioniert ws aber dennoch nicht (geht das überhaupt ohne @Override
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Dez-->Binär mit eigener bit Anzahl Erkennung. Java Basics - Anfänger-Themen 3
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
B Eigener Validierungseditor? Java Basics - Anfänger-Themen 3
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
Bluedaishi Jar mit eigener JRE Java Basics - Anfänger-Themen 7
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
J Threads Problem mit eigener ArrayList Java Basics - Anfänger-Themen 2
E MCLauncher eigener Client workt nicht? Java Basics - Anfänger-Themen 4
A Input/Output Datenströme schließen in eigener Methode Java Basics - Anfänger-Themen 5
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
N Schlüsselworte Bubble Sort nach eigener Ordnung Java Basics - Anfänger-Themen 8
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
Q ArrayList mit eigener Klasse in Java sotieren Java Basics - Anfänger-Themen 2
N BierSpiel von "Kopf bis Fuss" eigener Code...kleine Problemstellung. Java Basics - Anfänger-Themen 11
C OOP Erstellen eigener Objekte die es schon gibt "schlau"? Java Basics - Anfänger-Themen 3
V Arrays aus eigener Klasse erstellt, zuweisung aber spuckt Fehler in verbindung mit main Methode aus. Java Basics - Anfänger-Themen 3
L Eigener FilterReader Java Basics - Anfänger-Themen 12
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
M import von eigener Klasse Java Basics - Anfänger-Themen 12
P ArrayList aus eigener Klasse "überschreibt" Werte nicht Java Basics - Anfänger-Themen 4
M xPos und yPos eigener Klassen geben lassen Java Basics - Anfänger-Themen 3
H Exit Befehl in eigener Konsole Java Basics - Anfänger-Themen 9
S Eigener InputStream, Hilfe bei read-Methode Java Basics - Anfänger-Themen 6
S Überladener Konstruktor und aufruf aus eigener Klasse Java Basics - Anfänger-Themen 2
D Klassen Problem mit Eigener Array-Klasse Java Basics - Anfänger-Themen 10
S [JUnit] eigener Testsuite Runner + Ausgabe Java Basics - Anfänger-Themen 6
G Eigener Autoboxing Datentyp Java Basics - Anfänger-Themen 3
M Eigener InputStream will nicht mit BufferedReader Java Basics - Anfänger-Themen 3
B Datentypen Probleme mit eigenem Get() bei eigener HashMap Java Basics - Anfänger-Themen 6
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
G Datentypen "Liste" eigener Objekte durchsuchen Java Basics - Anfänger-Themen 6
S mit eigener Klasse JTextField ändern Java Basics - Anfänger-Themen 3
N Vektor mit eigener Datenstruktur sortieren Java Basics - Anfänger-Themen 20
I Datentypen Eigener DatenTyp Java Basics - Anfänger-Themen 2
B Ordner öffnen (eigener Dateibrowser) Java Basics - Anfänger-Themen 8
B Eigener Webserver + Eigener Webbrowser Java Basics - Anfänger-Themen 7
I eigener "Abstandshalter" vs. LayoutManager Java Basics - Anfänger-Themen 6
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
D Container mit eigener Klasse Java Basics - Anfänger-Themen 5
B Verwenden eigener Object-Klassen Java Basics - Anfänger-Themen 9
H Eigener Button Java Basics - Anfänger-Themen 2
M Eigener Iterator für LinkedList Java Basics - Anfänger-Themen 20
I Java eigener MSN Messenger schreiben Java Basics - Anfänger-Themen 3
R Event in eigener Klasse implementieren ? Java Basics - Anfänger-Themen 8
G Fortlaufende Aktualisierung bei eigener Klasse Java Basics - Anfänger-Themen 2
G IOException Problem in eigener Klasse Java Basics - Anfänger-Themen 8
B Import Problem mit eigener Klasse. Java Basics - Anfänger-Themen 8
G Eigener Parser Java Basics - Anfänger-Themen 4
T Problem mit eigener Klasse Java Basics - Anfänger-Themen 7
A eigener Explorer via Java? Java Basics - Anfänger-Themen 9
D Thread und Process Kommunikation bei eigener Console Java Basics - Anfänger-Themen 2
T Öffnen externer Datei als eigener Prozess Java Basics - Anfänger-Themen 8
G Datei aus eigener JAR-Datei verwende Java Basics - Anfänger-Themen 2
N Porblem mit dem Importieren eigener Pakete Java Basics - Anfänger-Themen 4
T ActionListener in eigener Klasse Java Basics - Anfänger-Themen 10
T ActionListener in eigener Klasse Java Basics - Anfänger-Themen 5
L ActionListener in eigener Klasse Java Basics - Anfänger-Themen 3
T Erstellen eigener packages Java Basics - Anfänger-Themen 6
G JMenuBar in eigener Klasse erstellen Java Basics - Anfänger-Themen 3
A Eigener Datentyp? Java Basics - Anfänger-Themen 39
F Eigener IP-Paket-Header Java Basics - Anfänger-Themen 15
L Mergesort (aber anders) Java Basics - Anfänger-Themen 2
KogoroMori21 MergeSort Algorithmus Java Basics - Anfänger-Themen 2
O Rekursion Mergesort Java Basics - Anfänger-Themen 18
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
H Mergesort aufwand berechen Java Basics - Anfänger-Themen 5
I MergeSort iterativ mit Stacks Java Basics - Anfänger-Themen 13
L Methoden Mergesort methode Java Basics - Anfänger-Themen 4
K MergeSort Stackoverflow Java Basics - Anfänger-Themen 5
K Mergesort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
T MergeSort rekursiv programmieren Java Basics - Anfänger-Themen 8
A Rekursion (anhand von Mergesort) nachvollziehen Java Basics - Anfänger-Themen 4
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
A Probleme mit MergeSort Generische Liste Java Basics - Anfänger-Themen 0
M Mergesort Aufgabe große Probleme Java Basics - Anfänger-Themen 9
P Mergesort Probleme Java Basics - Anfänger-Themen 4
I Mergesort mit ArrayList Java Basics - Anfänger-Themen 4
C Mergesort Java Basics - Anfänger-Themen 4
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
N MergeSort Java Basics - Anfänger-Themen 8
M MergeSort - Zahlen verschwinden Java Basics - Anfänger-Themen 2
P MergeSort mit Liste Java Basics - Anfänger-Themen 4
M MergeSort rekursiv Java Basics - Anfänger-Themen 2
B Methoden Natural Mergesort Java Basics - Anfänger-Themen 2
P Mergesort || 2 SetLists mischen Java Basics - Anfänger-Themen 2
P Mergesort (zyklische Liste) Java Basics - Anfänger-Themen 2
N MergeSort mit Liste Java Basics - Anfänger-Themen 8
P Probleme bei codierung von MergeSort Java Basics - Anfänger-Themen 4
M MergeSort - Threads in Anwendung bremsen alles! Java Basics - Anfänger-Themen 4
Houly Mergesort Java Basics - Anfänger-Themen 4
M Mergesort Java Basics - Anfänger-Themen 11
C MergeSort Problem Java Basics - Anfänger-Themen 5
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5
B mergesort/rekursion Java Basics - Anfänger-Themen 9
A Generischen Klassen Java Basics - Anfänger-Themen 8
W Vergleiche bei generischen Datentypen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben