Подтвердить что ты не робот

Сортировка Radix, сортировка данных по плавающей позиции

Является ли сортировка radix способной сортировать данные float, например, 0,5, 0,9, 1,02 и т.д.?

4b9b3361

Ответ 1

Да, это возможно. Для правильной обработки отрицательных значений требуется дополнительный проход. Статьи Pierre Terdiman и Майкл Херф подробно обсуждают, как для его реализации. Короче говоря, вы конвертируете float в целое число без знака, сортируете их и затем конвертируете обратно в float (это необходимо, иначе отрицательные значения будут некорректно отсортированы после положительных).

Их метод имеет то преимущество, что вы не вводите никаких ошибок в свои данные (при условии, что ваш процессор хранит поплавок в соответствии со стандартом IEEE 754).

Ответ 2

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