Radix Sort, сортировка данных с плавающей точкой - PullRequest
12 голосов
/ 09 января 2011

Может ли сортировка по основанию сортировать данные с плавающей запятой, например, 0,5, 0,9, 1,02 и т. Д.?

Ответы [ 2 ]

24 голосов
/ 09 января 2011

Да, это возможно.Требуется дополнительный проход для правильной обработки отрицательных значений.В статьях Пьера Тердимана и Майкла Херфа подробно обсуждается, как это реализовать.Короче говоря, вы конвертируете число с плавающей точкой в ​​целое число без знака, сортируете их, а затем конвертируете их обратно в число с плавающей точкой (это необходимо, иначе отрицательные значения будут неправильно отсортированы после положительных).Преимущество в том, что вы не вносите никаких ошибок в свои данные (при условии, что ваш процессор хранит данные в соответствии со стандартом IEEE 754).

1 голос
/ 09 января 2011

Не из коробки, но у вас есть несколько вариантов. Вы можете дискретизировать данные, например, умножив на 100 и округлив (так, чтобы у вас, например, было 5, 9 и 102). Вы также можете разбивать данные на группы (группировать числа по диапазонам, как в 0

...