Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
LeeDiGer Super JLI'ler

Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 21.09.2003, 08:36 Titel: Sortieren einer Liste |
|
|
Ich hab eine Struktur, die mehrere Elemente enthält ,wie Punkte, Name, Schwierigskeitsgrad, Spieldauer. Wie speicher ich die nach Punkten sortiert in eine Liste? Ich habe von der Funktion sort() gehört, aber wie wendet man die an? Wie gibt man an, dass man die Liste nach einem bestimmten Element sortieren will? |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 21.09.2003, 09:37 Titel: |
|
|
Nee das musst du schon selber machen!
qsort(*base,num,width,zeiger auf eine funktion)
*base zeiger auf daserste element des arrays
num Anzahl der Elemente des arrays
width größe eines elements des arrays
letzter Parameter die Funktion, die qsort mitteilt, wie es sortieren soll
Bei Rückgabewert -1 zurück bei 1 vorwärts sortieren... _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 21.09.2003, 10:59 Titel: |
|
|
TheMillenium: Muss man nicht selber machen. ;)
Du benutzt am besten den STL Algorithmus "sort". Es ist eine implementation von Quick Sort und einer der schnelleren Algorithmen. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
abc_d JLI Master Trainee

Alter: 35 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
|
Nach oben |
|
 |
CorDharel Junior JLI'ler

Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 21.09.2003, 13:38 Titel: |
|
|
Meint ihr nach Alphabet sortieren  _________________ Greetz CorDharel |
|
Nach oben |
|
 |
Tomm Junior JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 93 Wohnort: Neuburg an der Donau Medaillen: Keine
|
Verfasst am: 22.09.2003, 19:39 Titel: |
|
|
Wenn es unbedingt Eigenbau sein muss, dann kann man das auch ungefähr so machen (Sortierung nach Punktzahl):
Code: |
void Sortierung(void)
{
//Hilfsvariable
int h=0;
//Sortieren
for(int i=0; i<9; i++)
{
for(int j=i; j<10; j++)
{
if(score[i] < score[j])
{
h = score[i];
score[i] = score[j];
score[j] = h;
}
}
}
}
|
score[] ist vom Typ int, hier werden die Punktzahlen gespeichert
Der Rest sollte klar sein.
Edit: Ich sollte vielleicht noch dazu sagen, dass ich den Code ursprünglich in Informatik gelernt und von Turbo Pascal einfach nach C++ "konvertiert" hab. _________________ Tomato Interactive Homepage
Das Forum von Tomato Interactive |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 22.09.2003, 20:43 Titel: |
|
|
Der Code den du geliefert hast ist aber ziemlich lahm falls man ihn auf grössere Datenmengen anwenden möchtest. Warum nicht gliech quicksort ? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 23.09.2003, 08:24 Titel: |
|
|
FallenAngel84 hat Folgendes geschrieben: | Der Code den du geliefert hast ist aber ziemlich lahm falls man ihn auf grössere Datenmengen anwenden möchtest. Warum nicht gliech quicksort ? | Gut, dann erkläre mal einem Newbie den Quicksortalgoritmus (Ich kenne Ihn) - Ich denke, dass gerade Anfänger mit Komplex-Rekursiven Funktionen noch nichts anfangen können, wohingegen dieser Algoritmus fast selbsterklärend ist... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
Tomm Junior JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 93 Wohnort: Neuburg an der Donau Medaillen: Keine
|
Verfasst am: 23.09.2003, 16:55 Titel: |
|
|
FallenAngel84 hat Folgendes geschrieben: | Der Code den du geliefert hast ist aber ziemlich lahm falls man ihn auf grössere Datenmengen anwenden möchtest. |
Damals, als Turbo Pascal noch aktuell war, gab es bestimmt noch nicht so große Datenmengen. Wie gesagt ist der Code aus dem Informatikunterricht und da mussten wir sowieso nicht viel sortieren. Ausserdem stehen in einer Highscoreliste sowieso meistens nur 10 Plätze. _________________ Tomato Interactive Homepage
Das Forum von Tomato Interactive |
|
Nach oben |
|
 |
abc_d JLI Master Trainee

Alter: 35 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 23.09.2003, 20:21 Titel: |
|
|
Ich meinte damit auch nur das man schon jetzt bessere Algorithmen nutzen könnte weil es sicher recht schnell vorkommen könnte das man einen schnellen Algorithmus braucht.
Siehe BlackLordOfDragons Link. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
LeeDiGer Super JLI'ler

Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 31.08.2004, 09:15 Titel: |
|
|
So wie es aussieht, kann man die Sortieralgorithmen nur auf Vektoren anwenden, die beim Zerbst erklärt wurden. Aber gehts nich irgendwie auch mit Listen? _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
 |
Nahar Senior JLI'ler
Alter: 37 Anmeldedatum: 16.07.2003 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 31.08.2004, 09:26 Titel: |
|
|
Oder für wenige Elemente kannst du auch Bubblesort benutzen:
Ist ein bisschen langsamer, bei kleinen Mengen (Informatisch, nicht Mathematischen Mengen) machts aber nix
Code: |
r=maximale anzahl;
for(int i=0;i<r;i++) {
for(int j=r;j>i;j--) {
if(element[i]<element[j])
Tausche die Beiden;
}
}
|
Ist halt leicheter zu implementieren
Implementiert halt den Algo selber, dann müsst ihr nicht auf irgendwelche Einschränkungen aufpassen. so schwer ist Quicksort auch nicht |
|
Nach oben |
|
 |
LeeDiGer Super JLI'ler

Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 31.08.2004, 09:56 Titel: |
|
|
Ich habe folgende Deklaration:
Code: |
list<CBillboard*>::iterator itAlpha; //Grafikzeiger
list<CBillboard*> listAlpha; //Grafikliste
|
In CBillboard ist die Information"float Distance" enthalten.
Jetzt soll jedes Element aus dieser Liste nach "Distance sortiert werden.
Geht das überhaupt mit Listen? Wenn nicht, wie siehts mit Vektoren aus? Gibts da eine Funktion aus der STL, die das erledigen kann? _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
 |
|