PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Alternative zu "qsort" (n. rekursiv)


Gast
2008-06-03, 14:10:13
Hi,

gibt es in der C-stdlib eigentlich eine Sortierfunktion auf einem Array, die nicht rekursiv arbeitet? Oder was würde man machen, wenn man qsort durch etwas nicht-rekursives ersetzen müßte?

danke

Shink
2008-06-03, 14:56:55
AFAIK gibts das in der C-stdlib nicht.
Wenn du furchtbar heiß auf einen nicht-rekursiven Sortieralgorithmus bist kannst du natürlich auch QSort nicht-rekursiv implementieren. Die Ausführung geschieht ohnehin nicht-rekursiv.

Coda
2008-06-03, 15:55:26
Wer sagt dass qsort in der Standardbibliothek überhaupt rekursiv implementiert ist?

Shink
2008-06-03, 16:17:04
Keine Ahnung; ich glaub nicht dass das standardisiert ist ob es rekursiv ist oder nicht. Wenns beim Gast nicht rekursiv implementiert wär hätte er die Frage nicht gestellt (denke ich zumindest).

Trap
2008-06-03, 17:30:22
Oder was würde man machen, wenn man qsort durch etwas nicht-rekursives ersetzen müßte?
Man kann jede Rekursion durch eine Schleife ersetzen, man muss dafür nur selbst einen Stack erzeugen und entsprechend verwalten.

Superguppy
2008-06-03, 17:45:12
Du könntest einen Bubblesort oder Insertionsort verwenden - die laufen meines Wissens iterativ. Allerdings würde ich das nur für sehr kleine Datenmengen empfehlen, da insbesondere Bubblesort extremst lahm ist.

MadMan2k
2008-06-03, 19:15:51
Man kann jede Rekursion durch eine Schleife ersetzen, man muss dafür nur selbst einen Stack erzeugen und entsprechend verwalten.
bei qsort braucht man den aber nicht; man kann qsort iterativ in-place machen.

rotalever
2008-06-03, 21:35:21
Man sollte aber immer berücksichtigen, dass quadratische Laufzeit eintreten kann. In vielen Fällen macht das nichts, aber je nach Anwendungsgebiet könnten Sicherheitslücken etc. entstehen.