Wie sortiert Radix Floatdaten? zum Beispiel 12.4, 45.13 usw. würde es zuerst die rechte Seite des Dezimalpunkts lesen? Oder die linke Seite des Dezimalpunkts zuerst? Und dann, wenn es die rechte Seite des Dezimalpunkts lesen würde, wie würde es die Zahlen behandeln, würde es liest zuerst die ganz rechte zuerst?Radix Sort Floating Data
Antwort
Siehe diese Seite einer Diskussion darüber.
http://codercorner.com/RadixSortRevisited.htm
Grundsätzlich speichern Computer die Gleitkomma- in einem bestimmten Format. Sie schreiben es nicht als 45.13 aus. Infolgedessen wird das Nachdenken darüber nicht so hängen, wie es tatsächlich funktioniert.
Wenn Sie das ignorieren, muss Radix sort zuerst den wichtigsten Teil betrachten. In einer Gleitkommazahl, dass es die meisten Ziffern links. Im Wesentlichen würden wir alle Zahlen auffüllen, um die gleiche Anzahl von Ziffern vor dem Dezimalpunkt zu haben. Dann haben wir die Ziffern von links nach rechts gelesen.
Eine Radix-Sortierung arbeitet mit der Binärdarstellung einer Zahl und sortiert Objekte so, als wären sie eine große binäre Ganzzahl.
Für echte ganze Zahlen und Zeichenketten entspricht die binäre Darstellung ziemlich gut mit der Sortierreihenfolge, die wir normalerweise erwarten, und so ist radix sort eine interessante, wenn auch etwas ungewöhnliche Alternative.
Es stellt sich heraus, dass, solange die Gleitkommazahl in der richtigen Richtung durchlaufen wird, radix sort gut funktionieren kann, außer dass das Zeichenbit rückwärts behandelt wird.
In der internen binären Darstellung haben FP-Werte ein Vorzeichenbit, etwa 10 Bits des Exponenten, und dann sind etwa 20 oder 50 Bits der "Bruch" oder die Mantisse.
S E E E E E E E E M M M M M M M M M M M M M M M . . .
Der Exponent wird vorgespannt, so dass kleine Werte sind wirklich die meisten negativen Exponenten, so ist es richtig sortiert, wie die Mantisse der Fall ist.
Solange alle Zahlen entweder positiv oder negativ sind oder wenn das Vorzeichenbit zuerst invertiert wird und der Scan von links nach rechts verläuft, denke ich, dass eine Radix-Sortierung für FP-Nummern funktioniert.
Der beste Code für Radix Sortierung verdoppelt, dass ich weiß, ist hier: https://bitbucket.org/ais/usort/src/474cc2a19224/usort/f8_sort.c