Best Practice Ist die Sortierung richtig?

NeuHier6

Mitglied
Hallo wertes Forum, ich bin neue hier, deswegen hackt nicht gleich auf mir rum. ;)

Und gleich zur ersten Frage:

Java:
    Collections.sort(data.profits2, (Lis[] o1, Lis[] o2) -> {
        int pro1 = o1[1].price - o1[0].price,
                pro2 = o2[1].price - o2[0].price;
        Sys s2 = o1[1].sta.sys;
        Sys s3 = o2[1].sta.sys;
        float d1 = (sol.x - s2.x) * (sol.x - s2.x) + (sol.y - s2.y) * (sol.y - s2.y) + (sol.z - s2.z) * (sol.z - s2.z);
        float d2 = (sol.x - s3.x) * (sol.x - s3.x) + (sol.y - s3.y) * (sol.y - s3.y) + (sol.z - s3.z) * (sol.z - s3.z);
        float comp1 = 100f / maxPro * pro1 - 100f / maxDis * d1;
        float comp2 = 100f / maxPro * pro2 - 100f / maxDis * d2;
        return Float.compare(comp2, comp1);
    });

Meine Frage wäre eben, ob die Sortierung richtig ist ?
Es soll nach der Entfernung zu Sol aufsteigend und nach dem erzielten Profit absteigen sortiert werden. Dabei ist nahe an Sol besser, weit weg von Sol schlechter und ein hoher Profit besser und ein geringer Profil schlechter.

MaxPro ist der maximal erreichbare Profit ! und MaxDis ist die maximale Entfernung zu Sol.

Ich hoffe doch sehr verständlich geschrieben zu haben. ; )
 

httpdigest

Top Contributor
Ob die Sortierung da richtig ist, kann nur dein ganz konkreter Anwendungsfall beantworten.
Du verrechnest ja den Profit mit der Distanz über die Formel, nennen wir sie man "Fitnessfunktion":
`100/maxP * p - 100/maxD * d`
Du kannst dir einen 3D oder "Equiline/Contour"-Plot davon mal ausgeben lassen.
Der Einfachheit halber können wir hierfür: f(x, y) = x - y*y annehmen (das heißt konstante Faktoren können wir erstmal vernachlässigen), wobei
x = der Profit
y = die Distanz (bei dir ja quadratisch)
http://www.wolframalpha.com/input/?i=Plot3D+[+[//math:x-y*y//]+,+{+x+,+[//number:0//],+[//number:400//]+}+,+{+y+,+[//number:0//],+[//number:20//]+}+]
Das heißt, nicht immer ist eine geringere Entfernung zur Sonne besser, nämlich dann nicht, wenn bei höherer Entfernung gleichzeitig auch der Profit höher ist.
Desweiteren verwendest du für die Distanzberechnung nicht die tatsächliche Euclid'sche Norm sondern einfach nur das Vektorprodukt, also die quadratische Distanz. Ich weiß nicht, ob das gewünscht ist, es verändert aber deine "Fitness" Funktion, indem es diese abhängig vom Quadrat der Entfernung macht.
 

mrBrown

Super-Moderator
Mitarbeiter
Es soll nach der Entfernung zu Sol aufsteigend und nach dem erzielten Profit absteigen sortiert werden. Dabei ist nahe an Sol besser, weit weg von Sol schlechter und ein hoher Profit besser und ein geringer Profil schlechter.
Aktuell sortierst du nah der Differenz zwischen Profit und Entfernun:
nah dran, viel profit > weit weg, viel profit = nah dran, kein Profit > weit weg, kein profit

Formal sieht es aber richtig aus.
(BTW, du solltest mal an deiner Benennung arbeiten ;) )
 

NeuHier6

Mitglied
Desweiteren verwendest du für die Distanzberechnung nicht die tatsächliche Euclid'sche Norm sondern einfach nur das Vektorprodukt, also die quadratische Distanz. Ich weiß nicht, ob das gewünscht ist,
Na man müsste auf beide (d1, d2, und maxDis) noch Math.sqrt anwenden!
Aber ich denke nicht an eine Beeinflussung dadurch !
Herzlichen Dank für eure Erklärungen!
@mrBrown zB dachte ich mir das so (links der Profit und rechts Entfernung):
Code:
100 - 100 = 0 (hoher Profit, weit entfernt)
100 - 0   = 100 (hoher Profit, geringe entfernt)
0   - 100 = -100 (geringer Profit, weit entfernt)
0   - 0   = 0 (geringer Profit, geringe entfernt)

50 - 60 = -10 ( mittlerer Profit, mittelhohe Entfernung)
60 - 50 = 10 ( mittelhoher Profit, mittlere Entfernung)

Hoffentlich bildet das mein Code auch ab . :(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
U Sortierung in collections testen Java Basics - Anfänger-Themen 11
A Sortierung Java Basics - Anfänger-Themen 18
G Java Sortierung Java Basics - Anfänger-Themen 3
P topologische Sortierung Java Basics - Anfänger-Themen 15
M Topologische Sortierung Java Basics - Anfänger-Themen 1
S Sortierung Java Basics - Anfänger-Themen 4
K Sortierung eines int-Arrays von groß nach klein Java Basics - Anfänger-Themen 3
S Sortierung funktioniert nicht Java Basics - Anfänger-Themen 1
S Was ist schneller: direkte Sortierung oder indirekt ueber eine SortedMap..? Java Basics - Anfänger-Themen 10
F Collections Sortierung und Einfügen von Elementen Java Basics - Anfänger-Themen 1
L Lexikographische Sortierung eines Strings Java Basics - Anfänger-Themen 6
A Kleinste Ziffer im Array suchen um Sortierung zu erzeugen Java Basics - Anfänger-Themen 2
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
D Sortieren in Abhängigkeit von einer anderen Sortierung Java Basics - Anfänger-Themen 14
K Sortierung von Zahlen Java Basics - Anfänger-Themen 13
S Sortierung funktioniert nicht Java Basics - Anfänger-Themen 9
B Hiilfee! Step by Step sortierung eines Arrays... Java Basics - Anfänger-Themen 19
G Bubblesort - Falsche Sortierung Java Basics - Anfänger-Themen 6
T Datenstruktur für Sortierung Java Basics - Anfänger-Themen 4
S Collections Sortieren von 3 Collections nach "einer Sortierung" Java Basics - Anfänger-Themen 3
R Shellsort Sortierung Java Basics - Anfänger-Themen 5
K Sortierung von Anzahl der Wörtern in ArrayList Java Basics - Anfänger-Themen 4
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
H Sortierung eines String[][] mit Bedingung Java Basics - Anfänger-Themen 7
M Frage zur Sortierung Java Basics - Anfänger-Themen 8
S problem mit sortierung interface comperator Java Basics - Anfänger-Themen 11
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
F Treemap und Sortierung? Java Basics - Anfänger-Themen 2
L Random Sortierung Java Basics - Anfänger-Themen 9
A Sortierung (Gernerics & Liste) Java Basics - Anfänger-Themen 9
J Sortierung Java Basics - Anfänger-Themen 11
F compareTo - Sortierung nach 2 Argumenten Java Basics - Anfänger-Themen 10
? hilfe bei Fehlersuche Sortierung List Java Basics - Anfänger-Themen 5
O Sortierung Denkanstoss Java Basics - Anfänger-Themen 7
G ArrayList mit ArrayList als Inhalt - komische Sortierung? Java Basics - Anfänger-Themen 12
P Brauche Hilfe bei Sortierung eines JTrees ! Java Basics - Anfänger-Themen 14
K Kurze Frage zur Sortierung von Array-Inhalten Java Basics - Anfänger-Themen 5
G String Sortierung nach mehreren Kriterien Java Basics - Anfänger-Themen 4
G Sortierung eines Arrays nach mehreren Kriterien Java Basics - Anfänger-Themen 6
Q HashMap Sortierung Java Basics - Anfänger-Themen 11
S Sortierung Rückgängig machen?! Java Basics - Anfänger-Themen 2
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
R CSV Reader läuft nicht richtig an Java Basics - Anfänger-Themen 8
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
JensXF Methode überschreiben, so richtig? Java Basics - Anfänger-Themen 4
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
L Ist der Code richtig Java Basics - Anfänger-Themen 3
J Wie bestehenden Quellcode in IDE richtig übernehmen Java Basics - Anfänger-Themen 27
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
J Module richtig einbinden Java Basics - Anfänger-Themen 2
B Sind meine If-Statements richtig angesetzt ? Java Basics - Anfänger-Themen 27
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
X Wie Generics richtig benutzen ? Java Basics - Anfänger-Themen 5
P Stringbuilder richtig einsetzen Java Basics - Anfänger-Themen 1
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
A Array richtig füllen Java Basics - Anfänger-Themen 2
S String richtig formatieren Java Basics - Anfänger-Themen 2
P Methoden richtig anwenden Java Basics - Anfänger-Themen 3
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
X Best Practice Ein int Array richtig mischen Java Basics - Anfänger-Themen 20
D Richtig Vorbereiten auf eine Programmier Klausur Studium. Java Basics - Anfänger-Themen 7
M ObservableList wird nicht richtig geleert Java Basics - Anfänger-Themen 0
T Sortieralgorithmen richtig? Java Basics - Anfänger-Themen 1
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
S Wie implementiere ich MouseDragged richtig Java Basics - Anfänger-Themen 7
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
P Input/Output PQ-Formel wird nicht richtig berechnet Java Basics - Anfänger-Themen 6
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
H Wie lerne ich Java richtig? Java Basics - Anfänger-Themen 2
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
B Wie instanzisiert man einen Cursor richtig? Java Basics - Anfänger-Themen 3
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
J Erste Schritte Lottozahlen richtig generieren. Java Basics - Anfänger-Themen 12
J Behauptung so richtig? Java Basics - Anfänger-Themen 10
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
A Methode richtig überladen Java Basics - Anfänger-Themen 6
H Aufgabe so richtig gelöst? Java Basics - Anfänger-Themen 14
S Code richtig / besser machbar? (Nicht sicher, ob Code selbst falsch ist) Java Basics - Anfänger-Themen 4
W Ist mein Struktogram richtig erstellt worden? Java Basics - Anfänger-Themen 4
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
U Mehrfach verwendete Sub-Klassen richtig einbinden Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben