Zahlen sortieren in C++

Liebe Leute

Ich schreibe gerade ein Programm, das einem die Bestenliste (Highscore) von verschiedenen Spielern ausgibt.

Der Beste ist der mit den meisten Punkten (0 - unendlich mit x € Z). Die Punkte werden als int aus Dateien in zufälliger Reihenfolge eingelesen. Die besten 10 Spieler werden angezeigt. Darunter können theoretisch alle die gleiche Punktezahl haben.

Ich dachte daran, die Punkte in eine Tabelle „int punkte[10000]={0};“ einzulesen. Dies ist aber extrem kompliziert, besonders beim Sortieren, da jedes mal alle höheren Werte verschoben werden müssten.

Hat einer von euch schon mal so ein Sortierprogramm gemacht? Wie geht das am einfachsten?

Liebe Grüsse
Kalsan

Hallo

Hat einer von euch schon mal so ein Sortierprogramm gemacht?

Nein, aber evtl. kann http://www.computerbase.de/lexikon/Liste_von_Algorit… beim Wählen eines Algorithmus helfen.

mfg M.L.

Ich dachte daran, die Punkte in eine Tabelle „int
punkte[10000]={0};“ einzulesen.

Wieso willst du das denn überhaupt machen? Erstell ein int-Array mit 10 Stellen und initialisiere alle Stellen mit 0. Das Array enthält dann im folgenden die Spielstände der jeweils zehn bis dato bekannten Spieler.
Dann liest du die Punkte der einzelnen Spieler ein. Wenn der eingelesener Wert höher ist, als der kleinste Wert im Array, dann hat der gerde gelesene Spieler offensichtlich einen höheren Punktestand erreicht wie der niedrigste der aktuellen Top10. Daher ersetzt du diesen kleinsten Wert einfach durch den gerade eingelesenen.
Fertig.

Hallo Kalsan,

Der Beste ist der mit den meisten Punkten (0 - unendlich mit x
€ Z).

Bis unendlich kann schon mal nicht sein!

Die Punkte werden als int aus Dateien in zufälliger
Reihenfolge eingelesen.

Ein int hat nur einen begrenzten Bereich.

Die besten 10 Spieler werden
angezeigt. Darunter können theoretisch alle die gleiche
Punktezahl haben.

Ich dachte daran, die Punkte in eine Tabelle „int
punkte[10000]={0};“ einzulesen. Dies ist aber extrem
kompliziert, besonders beim Sortieren, da jedes mal alle
höheren Werte verschoben werden müssten.

Man kann auch absteigend sortieren, dann sind die ersten 10 Plätze im Array immer die besten 10.

MfG Peter(TOO)

Hat einer von euch schon mal so ein Sortierprogramm gemacht?
Wie geht das am einfachsten?

Hallo Kalsan,

am schnellsten geht es, wenn Du std::vector verwendest und dann mit std::sort sortierst. Die sind beide bei C++ mit dabei:

http://msdn.microsoft.com/en-us/library/ecdecxh1(VS…

Evt. ist stable_sort für Dich interessant, der läßt gleiche Elemente in der ursprünglichen Reihenfolge.

Viele Grüße
Thorsten

Hallo Peter

Na ja, halt eben unendlich im Sinne von „länger spielen, als man lebt“. Man wird nie eine zu grosse Punktezahl erreichen können.

Die Ergebnisse sollten mit dem grössten zuoberst sortiert sein, das habe ich gemeint.

Liebe Grüsse
Kalsan

gelöst
http://forums.devarticles.com/c-c-help-52/alphabetic… hat mir zusammen mit deiner Antwort geholfen. Herzlichen Dank!!

Herzlichen Dank! Das hilft zumindest bei Zahlen ganz wunderbar.

Herzlichen Dank für deine Antwort.