ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
1437
1437
EMPFEHLEN
-
Ich möchte mehere Zahlen nach der Größe ordnen und dann nach einander in Editfelder eintragen. Es soll eine Art Bestenliste sein.
Nehmen wir als Beispiel mal 10 Zahlen die ich Ordnen möchte. Nach dem Schema:
Spieler1 = 3 Punkte,
Spieler2 = 12 Punkte,
Spieler3 = 5 Punkte,
Spieler4 = 1 Punkte,
Spieler5 = 0 Punkte,
Spieler6 = 8 Punkte,
Spieler7 = 6 Punkte,
Spieler8 = 3 Punkte,
Spieler9 = 4 Punkte,
Spieler10 = 9 Punkte,
Wie sortier ich die am Besten? Ich möchte keine if-struktur verwenden, da dies ab einer bestimmter Menge extrem unhandlich wird.
-
Hallo,
Wie hälst du denn deine Spielerdaten?
In einer STL Liste mit strings oder wie?
Ich würde die Daten nicht in einzelne Edit-Felder legen.
nutz lieber eine TListBox zum Anzeigen.
MfG Turri
-
20.03.07 16:32 #3
- Registriert seit
- Jul 2003
- Ort
- Montreal (Quebec)
- Beiträge
- 1.666
Wenn es eine "handliche" Menge an Daten sind, ist das Sortierverfahren fast schon egal. Nimm ein einfaches Bubblesort...
-
Die TListBox bietet eine Sort-Funktion an, wenn es wirklich nur um das Sortieren geht.
MfG Turri
-
Das mit dem Anzeigen ist nicht so schlimm, aber die ListBox ist wirklich besser geeignet. Allerdings unterstützt die ListBox nur eine alphabetische Sortierung und keine nach Zahlen.
Was ist ein "Bubblesort"?
Ich speichere die Punkte als Integer und die Spielername als String.
Am Schluß möchte ich die Spieler mit ihren Punkten auflisten.
-
21.03.07 07:36 #6
- Registriert seit
- Jul 2003
- Ort
- Montreal (Quebec)
- Beiträge
- 1.666
Google liefert zu "Bubblesort" fast 500.000 Einträge...
Ich habe keine Ahnung über die Struktur Deines Datentyps. Ist das eine Liste, ein Array von structs oder nur ein loser Verbund? Auf jeden Fall musst Du dann auf den Integer sortieren und bei jedem Vertauschen den zugehörigen String mitnehmen...
-
Sorry, aber nun habe ich google benutzt und auch was gefunden in Bezug auf Bubblesort.
Hier mal den Code den ich versuche zuverstehn und dann für meine Idee versuchen werde zubenutzen:
Allerdings steht überall dass diese Methode recht ineffizient ist, also gibt es da bestimmt alternativen - kennt ihr welche?#include <condefs>
#include <conio>
#include <iostream>
#include <stdlib>
#include <iomanip>
using namespace std;
int arr1[50];
int arr2[50];
//---------------------------------------------------------------------------
void generate(int);
void sort(int);
void main()
{
int a;
int Z=50;
clrscr();
cout << " Wieviele Zufallszahlen ?";
cin >> Z;
randomize();
generate(Z);
for (a=0; a <= (Z-1);a++)
arr2[a]=arr1[a];
cout << fixed << setw(4);
for(a=0; a<=(Z-1); a++)
{
if ((a%20==0) && (a!=0))
{
getch();
clrscr();
}
cout << setw(4) << a << ": " << setw(4) << arr1[a] << " " << setw(4) << arr2[a] << endl;
}
sort(Z);
getch();
clrscr();
for(a=0; a<=(Z-1); a++)
{
if ((a%20==0) && (a!=0))
{
getch();
clrscr();
}
cout << setw(4) << a << ": " << setw(4) << arr1[a] << " " << setw(4) << arr2[a] << endl;
}
getch();
}
void generate(int b)
{
for(int a=0; a<=(b-1); a++)
{
arr1[a]=(random(100)+1);
}
}
void sort(int A)
{
int d;
for (int i = 0; i <= (A-1); i++)
{
for (int j = (A-1); j > i; j--)
{
if (arr2[i] >= arr2[j])
{
d = arr2[i];
arr2[i] = arr2[j];
arr2[j] = d;
}
}
}
}
-
21.03.07 14:43 #8
- Registriert seit
- Jul 2003
- Ort
- Montreal (Quebec)
- Beiträge
- 1.666
Von wie vielen Datensätzen reden wir hier denn? Wenn die Anzahl um die 1000 und darunter liegt, dann ist die Effizienz egal - ich persönlich würde sogar noch eine 10er Potenz höher gehen...
Bubblesort Meta (n Elemente):
Code :1 2 3
gehe mit m von 1 bis n durch die Daten gehen mit t von m bis n durch die Daten wenn ein Element E_t kleiner als Element E_t+1 ist, vertausche beide
Sollte nicht schwer zu implementieren sein.
-
Danke für die Anregungen
.
-
Ich bekomm es einfach nicht hin. Bekomme den Bubblesort nicht hin. Ich will ein Array "zahl[0-19]" welches eben verschiedene Werte habt sortieren und dann in das Array "sort[0-19]" zuweisen.
Ich komme mir grad echt doof vor, aber ich hoffe hier kann mir jmd helfen.
Gruß
Dome
-
Beim Bubble Sort braucht man kein zweites Feld.
Es wird alles in einem Feld sortiert.
In arr2 sollten die Werte nun sortiert sein.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
void sort() { // arr2 wäre in dein Feld "zahl" // A ist die größe deines Feldes // jetzt musst du für A nur noch deinen Wert der Feldgröße eintragen. int A = 20; int d; // temporärer Wert for (int i = 0; i <= (A-1); i++) { for (int j = (A-1); j > i; j--) { if (arr2[i] >= arr2[j]) { d = arr2[i]; arr2[i] = arr2[j]; arr2[j] = d; } } } }
MfG Turri
-
Danke dir. Hab den Code bei mir angepasst und er tut wunderbar. Danke.
Gruß
_Dome_
Ähnliche Themen
-
ganze Zahlen der Größe nach ordnen?!
Von d2mike im Forum JavaAntworten: 2Letzter Beitrag: 26.10.06, 23:28 -
[MySQL]1 Query, mehrere Tabellen, ordnen nach Timestamp
Von Julian Maicher im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 15.08.06, 18:14 -
Bilder ordnen sich neu - je nach Größe des Browserfensters
Von harrry im Forum Flash PlattformAntworten: 8Letzter Beitrag: 26.09.05, 09:29 -
3 Zahlen der größe nach sortieren?
Von generalgodlike im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 22.06.04, 23:59 -
Werte nach Größe ordnen
Von nordi im Forum PHPAntworten: 6Letzter Beitrag: 06.11.02, 23:16





Zitieren

Login






