Sortieralgorhythmus

Gast #32576
Lesenswert?
• ▲
▼
Hallo zusammen,

Ich habe eine Frage zum sortieren von Daten.

Im SRAM des AT90S8515 habe ich 12 8Bit werte stehen.
Diese 12 Werte möchte ich jetzt der größe nach ordnen und an irgendeiner 
stelle im SRAM oder Registern wieder abspeichern.
Angefangen mit dem Größten.

Wer hat schon Erfahrung mit solchen Sortieralgorhythmen bzw. wer könnte 
mir Tipps zur Umsetzung geben.

Julien
Gast #32579
Lesenswert?
• ▲
▼
Für diese Aufgabe scheint mir der "Bubblesort" geeignet.
Funktionsprinzip:


Vergleiche aktuelle Speicherstelle mit der nachfolgenden.
ist die nachfolgende größer, vertausche beide. Sonst tue nichts.

Dies für alle 12 Werte machen (also 11 mal).
Die komplette Sortierung so oft durchführen, bis kein Tausch mehr 
stattgefunden hat (max. 12 mal).
Gast #32580
Lesenswert?
• ▲
▼
Hallo Julien,

das Sortieren Deiner Daten ist eine ganz einfache Sache! Du brauchst 
einen Zähler und ein Flag-Bit. Der Zähler läuft von 1 bis n Elemente 
(bei Dir sind das zwölf), Du holst Dir das Element, auf das der Zähler 
zeigt in ein Register z.B X und das folgende Element (also Zählerstand 
plus 1) in ein anderes Register z.B Y. Nun subtrahierst Du Y von X, ist 
das Ergebnis negativ so werden die beiden Elemente in der Tabelle 
vertauscht, da ja das Zweite grösser als das Erste ist. Wenn eine 
Vertauschung erfolgt ist, wird das Flag gesetzt. Ist der Zähler 
abgelaufen, so wird geprüft ob das Flag gesetzt ist. Ist es gesetzt 
erfolgt das gleiche Spiel noch einmal wenn nichts getauscht wurde ist 
Deine Tabelle geordnet.

Das Ganze nennt sich Bubble-Sort, weil es (bei visueller Betrachtung) 
den Anschein hat, das die Elemente von unten nach oben "blubbern"!

GRUSS   INGO
Gast #32581
Lesenswert?
• ▲
▼
Also danke erst mal an euch.

Ich werde micht dann mit diesem Verfahren anfreunden und es in Assembler 
umsetzen.

Sollte der Code gut funktionieren, kann ich ihn dann der Codesammlung 
hinzufügen.

Gruß Julien
Gast #32583
Lesenswert?
• ▲
▼
@ Sebastian

Au Backe mein Zahn!!  Na klar Du hast recht, das kommt davon wenn man 
einen Beitrag mal eben zwischen Tür und Angel schreibt!

Danke

@ thkais

Sorry, wegen meines Beitrages, ich wollte mich nicht mit fremden Federn 
schmücken. Hatte den Beitrag offline, schnell getippt und dann ins Netz 
gescheucht, ohne vorher nachzusehen ob schon ein gleicher Beitrag da 
ist.

ENTSCHULDIGUNG!



GRUSS   INGO
Gast #32584
Lesenswert?
• ▲
▼
@Ingo: So etwas passiert immer wieder mal, daß während des Schreibens 
eines Postings jemand anders die gleiche Idee hat. Zwei Menschen, ein 
Gedanke - zero Problem, da braucht man sich nicht zu entschuldigen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 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.