.| Autor | Beitrag |
|---|---|
|
000 08.11.2003, 20:09 FredFox2 |
servus hab folgendes problem: mein algorithmus hätte so ausgesehen for (int i=0; i<participants-1;i++) // participants = anzahl der zeilen leider sortiert es absolut nicht so wie ich es will, es sortiert außerdem nur teilweise, sitze jetzt schon 5 stunden daran und komm einfach nicht drauf, kann mir vielleicht jemand helfen ? danke schon mal im vorraus mfg |
|
Profil || Suche |
|
001 08.11.2003, 20:27 [RMen]OneStone |
QSort hat zwar O(N²), aber ich glaub im Mittel log(2, N) oder so. Also eigentlich ziemlich gut, ausser halt im Worst-Case. edit: musst wohl oder über den Array, zumindest zum Suchen, so umstrukturieren, dass die 2. Spalte die erste Dimension ist --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ Dieser Beitrag wurde am 08.11.2003 um 20:29 von [RMen]OneStone bearbeitet. |
|
Profil || Suche |
|
002 08.11.2003, 20:36 FredFox2 |
danke, aber das problem ist ich soll es selber schreiben ;-) und keinen vorgefertigten sortieralgorithmus benutzen mfg |
|
Profil || Suche |
|
003 08.11.2003, 20:45 Retro |
euer lehrer / dozent verlangt von euch also einen neuen sortieralgorithmus..? weil es ja so wenige gibt, ich glaube kaum nimm bubblesort, das ist einfach nachzuvollziehen und für eine sinnlose aufgabe mehr als genug http://www.sortieralgorithmen.de/ --shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |
|
004 08.11.2003, 21:13 Prefect |
Tja, ein O(N)-Sortieralgorithmus wäre doch was Feines, gell? ;) cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
005 08.11.2003, 22:16 [RMen]OneStone |
Mal sehen, dann such' ich mal meine alten Info I Unterlagen raus und schreibe doch mal ganz feinili nen abstraktes QSort. Obwohl, geht schlecht ohne Mengenzeichen... oO Ne, find' ich nicht mehr, dann halt einfaches Bubblesort in C:
Was zur Laufzeit: im Mittel N², also gaaanz schlecht. BTW: Bei qsort musst du nen Callback machen, ist doch was eigenes. >D Nochmal edit nur für CN. *friedenspfeiferauch* >D --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ Dieser Beitrag wurde am 08.11.2003 um 22:48 von [RMen]OneStone bearbeitet. |
|
Profil || Suche |
|
006 08.11.2003, 22:35 CN |
seit wann gibts in c bool? Dieser Beitrag wurde am 08.11.2003 um 22:37 von CN bearbeitet. |
|
Profil || Suche |
|
007 08.11.2003, 23:52 Leviathan |
@Black/OneStone: Ich habe gelernt, dass eine polynomiale Zeitkomplexität (z.B. N²) noch in Ordnung ist, und nicht ganz schlecht. Ganz schlecht wäre eine exponentielle Zeitkomplexität oder noch viel schlimmer eine der Form N^N oder sogar N!^N!. Solche Programme sollte man gar nicht erst laufen lassen, da man dann für n=6 schon eine Zeitkomplexität im Bereich von 3*10^249 erhält... Das Problem der Sortierung eines zweidimensionalen Arrays sollte mit dem der Sortierung eines eindimensionalen Arrays identisch sein, du sortierst ja nur nach einer der beiden Dimensionen. Wenn man nach beiden Dimensionen sortiert lässt sich das aber auf die Sortierung eines eindimensionalen Arrays zurückführen. Schwierig wird es nur dann, wenn ein zweidimensionales Array eindimensional gespeichert ist und sortiert werden soll, dann ist die Addressierung nämlich kompliziert. --Entities: HL | HL² |
|
Profil || Suche |
|
008 09.11.2003, 12:00 [RMen]OneStone |
Hrm, Levi, das Problem ist nur das man mit ein bisschen Denken oft zu ner logarithmischen Lösung kommen kann, aus Sicht eines Informatikers ist N² absolut Tabu, von N^N will ich garnicht erst reden. --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
009 09.11.2003, 14:02 Prefect |
OneStone: Sofern ich das richtig in Erinnerung habe, bezeichnet man mit Bubblesort einen Algorithmus, der aus einem Array das "kleinste" Element heraussucht, an den Anfang kopiert, und dann nach dem selben Prinzip die restlichen N-1 Elemente des Arrays sortiert. Oder, als Schleife formuliert: Suche das kleinste Element von array[i..N] und verschiebe es an die Position array[i], für i von 0 bis N-1. Dein Algorithmus macht zwar etwas ganz ähnliches und hat die gleiche algorithmische Komplexität, ist aber trotzdem, soweit ich das auf den ersten Blick sehen kann, nicht so effizient, weil er die Elemente öfter herumkopiert. Bubblesort macht im schlimmsten Fall N Kopieroperationen, dein Algorithmus im schlimmsten Fall N^2. Ach ja: Sortieren kann nicht schneller als O(N) sein, weil man ja jedes Element mindestens einmal anschauen muss. Ein allgemein anwendbarer Sortieralgorithmus muss denke ich mal auch langsamer sein als O(N), weil man ja jedes Element dann wiederum mit den anderen Elementen vergleichen muss - allerdings habe ich da auf die schnelle keinen Beweis. In speziellen Fällen ist es aber möglich, in O(N) zu sortieren, und zwar dann, wenn man jedem Element einen eindeutigen Integer, nachdem sortiert werden soll, zuordnen kann. Kann man z.B. jedem Element einen Wert von 0 bis 255 zuweisen, so kann man die Liste mit N Elementen in eine Hashmap mit 256 Einträgen hineinsortieren, wobei man jedes Element genau einmal betrachtet. In der Praxis kommt sowas natürlich kaum vor. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
010 09.11.2003, 14:34 [RMen]OneStone |
Doch, in Hashtables. Na jedenfalls ist das, was ich da oben gepostet habe, dass was man uns in der Uni als BubbleSort eingetrichtert hat. --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
011 09.11.2003, 20:35 Prefect |
Hashtables haben typischerweise nichts mit Sortieren in dem Sinn zu tun. Natürlich sortieren sie strenggenommen auch, aber ich habe noch nie davon gehört, dass das jemand tatsächlich als "Sortieren" bezeichnet, weil man mit dem Endresultat letztendlich wenig anfangen kann (um genau zu sein: je besser die Hashfunktion ist, desto weniger kann man mit dem Ergebnis zum Sortieren anfangen). cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
012 09.11.2003, 22:15 Kriz |
Black: Ich glaube, du hast Bubblesort mit dem Straight Insert Algo verwechselt. In deinem Falle einen SI-Algo ohne Dummyfeld! Bubblesort sieht nämlich so aus:
Hier mal eine Liste der (mir) bekannten Algos zum Sortieren interner Listen: - Straight Insert Und weil Tron mich noch nervte damit: - Mergesort :D --K:R-I)Z++ Dieser Beitrag wurde am 09.11.2003 um 22:35 von Kriz bearbeitet. |
|
Profil || Suche |
|
013 10.11.2003, 13:52 Mazze |
Straight Insert ist dann wohl das, was ich unter "insertion sort" kenne... Genau das würd ich auch für kleine Arrays verwenden. Bubble ist nicht so der Hammer. Am simpelsten ist eigentlich selection sort, was manchal sogar besser geeignet sein kann, als qsort (z.B. sag mir die 10 meist verkaufen CDs aller Zeiten...). cu BattleTech-MOD: |
|
Profil || Suche |
|
014 10.11.2003, 16:24 FredFox2 |
@ Kriz und wie schreib ich den bubble sort jetzt auf ein [][] array um ? damit er halt immer die komplette zeile vertauscht anstatt nur den einen wert. mfg |
|
Profil || Suche |
|
015 10.11.2003, 22:13 Onkel Dittmeyer |
Erstmal anstatt des simplen > Operators beide Strings über ne Schleife Zeichen für Zeichen vergleichen. Wenn ein Zeichen in der Zeile vorher höher geordnet ist (vom ASCII Wert her oder was immer du willst) musste die Strings dann entweder durch Pointer Manipulation in der ersten Dimension vertauschen... oder mit realloc und strcpy arbeiten (n bissl aufwendig =)) -- |
|
Profil || Suche |
|
016 11.11.2003, 11:38 gerk |
Kriz, warum beginnst du beim Index 1 zu suchen? Tippfehler? „Und da wir uns ja seit heute etwas näher gekommen sind, kann ich nur sagen: Mir hilft da immer Norther volle Lautstärke (so wie jetzt), sodass die ganzen unrasierten, Wasserpfeife rauchenden, alternativen Wichsstudenten aus ihren, aus Bananenschalen und Abfall gebastelten, Sitzkissen fliegen.“ |
|
Profil || Suche |
|
017 11.11.2003, 18:33 Kriz |
Nein, aus der Implementierung heraus war Feld 0 ein Dummyfeld. Man kann das natürlich nach Belieben ab Index 0 umformen... --K:R-I)Z++ |
|
Profil || Suche |

