Wie im Betreff aufgeführt sind acht 16-Bit Integer schnell zu sortieren. Bis jetzt habe ich folgende Algorithmen probiert: Quicksort 1100 Zyklen Countingsort 900 Zyklen Insertionsort 700 Zyklen Was kann ich an Algorithmen noch ausprobieren. Möchte unter 500 Zyklen kommen.
Zeige mal den code, für 8 stück kommt mir das recht langsam vor. Nicht das der code selber nicht optimal ist.
Probiere mal den einfachsten: BubbleSort.
Hmmm, für gerade mal 8 Stück kann man doch alles direkt ohne Indexe hinschreiben. Ich denke da an einen binären Sortierbaum. Zuerst index 0/1 Vergleichen und sortieren, dann 2/3, 4/5, 6/7. Diese Teilmengen sind dann sortiert. Dann sortiert je zwei Teilmengen untereinander. Zu guter Lettzt nochmal. Wenn man es in Assembler macht, kann man alle 8 Zahlen in Registern halten und schnell vergleichen. http://de.wikipedia.org/wiki/Sortierverfahren http://de.wikipedia.org/wiki/Mergesort
Sortie schrieb: > Wie im Betreff aufgeführt sind acht 16-Bit Integer schnell zu sortieren. > > Bis jetzt habe ich folgende Algorithmen probiert: > > Quicksort 1100 Zyklen > Countingsort 900 Zyklen > Insertionsort 700 Zyklen > > Was kann ich an Algorithmen noch ausprobieren. Möchte unter 500 Zyklen > kommen. Also ich komme schon mit einem primitiven Bubblesort auf 311 Takte max. inclusive rcall/ret und Retten/Wiederherstellen aller benutzten Register. Der eigentlich Algorithmus dauert 232 Takte max. Der von Falk vorgeschlagene MergeSort dürfte nochmal etwas schneller sein, allerdings erfordert er auch erheblich mehr Tipparbeit, dazu hatte ich keine Lust mehr. Ich schätze mal, so irgendwas bei 180 Takten max. für den eigentlichen Algorithmus würden wohl rauskommen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.