Как отсортировать дробную и целую часть числа в C++?
Целую часть можно получить с помощью floor(v)
Дробную: (v - floor(v))
Для сортировки используйте стандартный sort.

Кстати, отсортировать вы можете массив (он у вас уже есть в памяти), когда говорят про поток, то это нечто потенциально бесконечное, порции данных из потока вы получаете частями и обрабатываете их.
Соответственно, если у вас действительно поток, то надо строить из его данных дерево. Для этого можно использовать стандартный map. Данные будут укладываться в дерево по мере поступления с одновременной сортировкой. Получить из дерева отсортированный список можно просто обходом дерева с помощью итератора.
Данные в дереве сортируются по ключу. Для ключа можно использовать примерно такую конструкцию: floor(v) + (1 - (v - floor(v)))
Нужно писать свой алгоритм сортировки или можно юзать алгоритмы из std? В целом алгоритм такой пишите функцию сравнения и передаете ее в функцию сортировки, получаете результат.