Drei Zahlen sortieren, Algorithmus?

Antworten
|silent
Moderator
Beiträge: 88
Registriert: Di 28. Okt 2008, 13:15
Kontaktdaten:

Drei Zahlen sortieren, Algorithmus?

Beitrag von |silent »

Moin,

ich hab gradn ziemlich bescheuertes Problem: Ich will 3 Zahlen vergleichen und komm einfach auf keine vernünftig kurze Lösung. Hab' 3 Zahlen vom gleichen Datentyp und will diese vergleichen, dabei soll er mir die kleinste zurückgeben. Zusätzlich soll darauf geachtet werden, dass wenn zwei Zahlen gleichgroß sind, beide zurückgegeben werden, wenn alle gleich sind, dann alle.

Hat da jmd. grad ne Lösung parat, häng da echt gradn bisschen...

Danke und Gute Nacht :)
Bild
Benutzeravatar
salami
Beiträge: 179
Registriert: Mi 5. Nov 2008, 22:41
Wohnort: Karlsruhe

Re: Drei Zahlen sortieren, Algorithmus?

Beitrag von salami »

Du könntest erst die kleinste Zahl mit zwei oder drei If-Anweisungen herausfinden und dann alle Werte (Punktepaare ;)), die diese Zahl (Abstand) haben einer Liste hinzufügen.
Romeo
Beiträge: 50
Registriert: Fr 19. Dez 2008, 20:24

Re: Drei Zahlen sortieren, Algorithmus?

Beitrag von Romeo »

Es besteht auch die Möglichkeit, dass du dir eine Liste anlegst, in der du deine gleichen "Werte" speicherst und dann der Reihe nach alle möglichen "Werte" durchgehst.
Wenn du einen Wert gefunden hast, der gleich dem repräsentativen Wert der Liste ist (bspw. der Erste), dann fügst du ihn hinzu. Wenn der neue Wert kleiner ist, löschst du die Liste und fügst den neuen "Wert" hinzu und wenn der neue Wert größer ist, kannst du dir all das sparen :-)

Das ist eine recht einfache Lösung, auch wenn sie von der Performance natürlich nicht an die if-else-if-else Version herankommen wird! (?).

Grüße
Roland
|silent
Moderator
Beiträge: 88
Registriert: Di 28. Okt 2008, 13:15
Kontaktdaten:

Re: Drei Zahlen sortieren, Algorithmus?

Beitrag von |silent »

Danke, is auch ne gute Idee. Habs aber jetz doch noch hinbekommen. Da es bei mir statisch immer 3 Werte bleiben werden brauch ich keine dynamische Methode draus machen. Habs jetzt mit 6 if-Abfragen und einem else-Zweig gelöst, is ganz gut so :) Dabei hab' ich drauf geachtet, dass er die "wahrscheinlich eher zutreffenden" Fälle zuerst betrachtet. Würde bei den Taktraten heute zwar nix mehr machen, aber so n'kleiner Performance-Gedanke sollte schon noch drinstecken :D
Bild
|silent
Moderator
Beiträge: 88
Registriert: Di 28. Okt 2008, 13:15
Kontaktdaten:

Re: Drei Zahlen sortieren, Algorithmus?

Beitrag von |silent »

Code: Alles auswählen

for (int i = 0; i < pointlist.size() - 1; i++) {
            for (int j = i + 1; j < pointlist.size(); j++) {
                pointDistance = pointlist.get(i).distance(pointlist.get(j));
                if (pointDistance < tmpDistance) {
                    /* aktueller Abstand ist kleiner als bisher verzeichnet */
                    shortestDistance.clear();
                    shortestDistance.setDistance(pointDistance);
                    shortestDistance.addPoint(pointlist.get(i));
                    shortestDistance.addPoint(pointlist.get(j));
                } else if (pointDistance == tmpDistance) {
                    /* aktueller Abstand ist gleich */
                    shortestDistance.addPoint(pointlist.get(i));
                    shortestDistance.addPoint(pointlist.get(j));
                } else if (i == 0 && j == 1) {
                    /* Abstand erstmalig festlegen */
                    shortestDistance.setDistance(pointDistance);
                    shortestDistance.addPoint(pointlist.get(i));
                    shortestDistance.addPoint(pointlist.get(j));
                } 
            }
        }
        return shortestDistance;
Warum das leider nicht funzt wenn man 3 Werte nimmt weiss ich nicht, jmd. nen Rat? Habe bis jetz die if-else eingebaut, fahre damit auch echt gut
Bild
Antworten

Zurück zu „Allgemein“