ArrayList sortieren mit Quicksort

Status
Nicht offen für weitere Antworten.

kwonilchang

Aktives Mitglied
Hallo!

Habe eine ArrayList, in der Punkte abgespeichert sind (x- und y- Koordinaten).

Diese ArrayList möchte ich mittels Qicksort aufsteigend sortieren. Das habe ich bisher schon:

Code:
void quickSort(ArrayList <Point> points, int low, int high) {

	     // select middle element to split list
	     int pivot = points.get((low+high)/2).x;

	     // define markers i and j
	     int i = low;
	     int j = high;

	     // split array
	     while (i<=j) {
	       while (points.get(i).x < pivot) i++;
	       while (points.get(j).x > pivot) j--;
	       if (i<=j) {
	       int tmp = points.get(i).x;
	         points.get(i).x = points.get (j).x;
	         points.get(j).x = tmp;
	         i++;
	         j--;
	       }
	     } // the pivot element should now be in the right position

	     // recursion: sort the lists left and right of the pivot
	     if (j > low) quickSort(points, low, j);
	     if (i < high) quickSort(points, i, high);
	   }

Mit diesem Programm wird bisher jedoch nur die x- Koordinate allein richtig sortiert. Mit der .get()- Methode kann ich nicht auf das vollständige Punktobjekt zugreifen. Ich erhalte eine Fehlermeldung Can't match Point to int.

Kann mir jemand helfen, wie ich das komplette Punktobjekt sortieren kann?

Danke schonmal!

Viele Grüße,

kwonilchang
 

tfa

Top Contributor
kwonilchang hat gesagt.:
Mit diesem Programm wird bisher jedoch nur die x- Koordinate allein richtig sortiert.
Sortiert ist gut. Du würfelst die Koordinaten aller Points völlig durcheinander.
Mit der .get()- Methode kann ich nicht auf das vollständige Punktobjekt zugreifen. Ich erhalte eine Fehlermeldung Can't match Point to int.
Die tmp-Variable muss eben vom Typ Point sein und kein int. So einfach ist das. Aber wonach willst du denn sortieren? Nach der X-Koordinate?

Geht es dir darum, unbedingt Quicksort selbst programmieren zu wollen? Wenn nicht, kannst du auch Arrays.sort() mit einem Comparator benutzen. Ist zwar kein Quicksort, funktioniert aber auch.
 

kwonilchang

Aktives Mitglied
Hallo tfa!

Danke für die Antwort. Hatte ganz übersehen, int in Point umzuwandeln.

Hab das jetzt mal nachgeholt:

Code:
void quickSort(ArrayList <Point> points, int low, int high) {

	     // select middle element to split list
	     Point pivot = points.get((low+high)/2);

	     // define markers i and j
	     int i = low;
	     int j = high;

	     // split array
	     while (i<=j) {
	       while (points.get(i) < pivot) i++; // Operator < undefined
	       while (points.get(j) > pivot) j--; // Operator > undefined
	       if (i<=j) {
	       Point tmp = points.get(i);
	         points.get(i) = points.get (j); // linke Seite muss Variable sein
	         points.get(j) = tmp; //linke Seite muss Variable sein
	         i++;
	         j--;
	       }
	     } // the pivot element should now be in the right position

	     // recursion: sort the lists left and right of the pivot
	     if (j > low) quickSort(points, low, j);
	     if (i < high) quickSort(points, i, high);
	   }

Nun erhalte ich obige Fehlermeldungen. Bin mit Java noch nicht so vertraut; bin mir nicht sicher, ob das Sortieren noch ordentlich arbeitet, wenn ich einfach Variablen in das Programm einbaue.

Im Allgemeinen möchte ich für die Sortierung Quicksort verwenden. Die Punkte werden vom Benutzer frei eingegeben und sollen dann nach der x- Koordinate aufsteigend sortiert werden. Kommt eine x- Koordinate öfter vor, so soll anhand der y- Koordinate sortiert werden.

Kannst Du mir da noch einen Tipp zur Lösung geben?
 

HLX

Top Contributor
kwonilchang hat gesagt.:
Code:
       while (points.get(i) < pivot) i++; // Operator < undefined
       while (points.get(j) > pivot) j--; // Operator > undefined

Du kannst Objekte nicht einfach mit < > vergleichen, da es keine Definition dafür gibt. Du musst also erst festlegen, was im Fall von Point "größer als" oder "kleiner als" bedeutet. Dazu kannst du entweder einen Comparator schreiben, oder du müsstest Point ableiten und das Interface Comparable implementieren.

Code:
points.get(i) = points.get (j); // linke Seite muss Variable sein 
points.get(j) = tmp; //linke Seite muss Variable sein
Das geht auch nicht. Du kannst mit get ein Objekt holen aber nicht modifizieren. Versuche nicht in der Ursprungsliste herumzuwurschteln. Erzeuge eine neue Liste und füge die Punkte sortiert dort ein.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
E ArrayList sortieren Java Basics - Anfänger-Themen 16
T ArrayList (Zahlen) aufsteigend sortieren mit Duplikaten Java Basics - Anfänger-Themen 8
N ArrayList sortieren Java Basics - Anfänger-Themen 6
D Best Practice ArrayList sortieren Java Basics - Anfänger-Themen 10
S ArrayList<ArrayList<Integer>> sortieren Java Basics - Anfänger-Themen 3
K Sring ArrayList Manuel sortieren Java Basics - Anfänger-Themen 15
A ArrayList sortieren... Java Basics - Anfänger-Themen 5
M ArrayList<String> alphabetisch sortieren Java Basics - Anfänger-Themen 5
W ArrayList nach Wunsch sortieren Java Basics - Anfänger-Themen 4
G ArrayList sortieren Java Basics - Anfänger-Themen 4
N Arraylist Auto sortieren Java Basics - Anfänger-Themen 7
L ArrayList mit Objekten sortieren Java Basics - Anfänger-Themen 3
L verschachteltes ArrayList nach Geburtsdatum sortieren Java Basics - Anfänger-Themen 4
O ArrayList sortieren Java Basics - Anfänger-Themen 3
V ArrayList Sortieren nach Double funktioniert nicht Java Basics - Anfänger-Themen 3
R ArrayList nach Strings sortieren Java Basics - Anfänger-Themen 6
N ArrayList<ArrayList> sortieren - hilfe bei Comperator Java Basics - Anfänger-Themen 6
M ArrayList sortieren Java Basics - Anfänger-Themen 8
G ArrayList mit Objeken nach Wert sortieren Java Basics - Anfänger-Themen 7
J ArrayList sortieren Java Basics - Anfänger-Themen 4
G Die Objekte eine ArrayList sortieren Java Basics - Anfänger-Themen 50
A Objekte in ArrayList anhand Variable sortieren Java Basics - Anfänger-Themen 10
M ArrayList sortieren mittels Comparator Java Basics - Anfänger-Themen 10
A ArrayList sortieren Java Basics - Anfänger-Themen 7
M ArrayList sortieren? Java Basics - Anfänger-Themen 8
G ArrayList sortieren (K-nearest neighbor/Clusterin) Java Basics - Anfänger-Themen 3
G Eine ArrayList effizient sortieren Java Basics - Anfänger-Themen 5
G ArrayList<Map.Entry.> nach den Values sortieren? Java Basics - Anfänger-Themen 8
G ArrayList sortieren - mal wieder. Java Basics - Anfänger-Themen 6
F ArrayList in ArrayList sortieren Java Basics - Anfänger-Themen 10
M ArrayList sortieren Java Basics - Anfänger-Themen 7
C ArrayListen in einer ArrayList der Grösse nach sortieren Java Basics - Anfänger-Themen 5
G TreeMap sortieren über ArrayList als Value Java Basics - Anfänger-Themen 9
M ArrayList in Array, dann sortieren Java Basics - Anfänger-Themen 15
L ArrayList mit int-Werten sortieren Java Basics - Anfänger-Themen 14
krgewb ArrayList allgemein halten Java Basics - Anfänger-Themen 6
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
W ArrayList und toString Java Basics - Anfänger-Themen 17
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M 2d ArrayList durchgehen Java Basics - Anfänger-Themen 2
Blkckroll45 Arraylist Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
D Arraylist mit Komplexen Datentyp Java Basics - Anfänger-Themen 3
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
thobren jtable arraylist Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
Zeppi OOP ArrayList Java Basics - Anfänger-Themen 2
P ArrayList Java Basics - Anfänger-Themen 4
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
M For Schleife/ArrayList Java Basics - Anfänger-Themen 12
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
krgewb ArrayList von ArrayList Java Basics - Anfänger-Themen 2
R ArrayList Problem Java Basics - Anfänger-Themen 6
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben