GCC; ATMega48: 8 Zahlen (16-Bit Integer) schnell sortieren

Gast #3230397
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.
#3230427
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
Gast #3230689
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.