Seite 1 von 1

Drei Zahlen sortieren, Algorithmus?

Verfasst: Fr 27. Feb 2009, 02:26
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 :)

Re: Drei Zahlen sortieren, Algorithmus?

Verfasst: Fr 27. Feb 2009, 20:55
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.

Re: Drei Zahlen sortieren, Algorithmus?

Verfasst: Sa 28. Feb 2009, 19:18
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

Re: Drei Zahlen sortieren, Algorithmus?

Verfasst: So 1. Mär 2009, 15:02
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

Re: Drei Zahlen sortieren, Algorithmus?

Verfasst: Sa 7. Mär 2009, 04:00
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