是的,这是可能的。需要额外的步骤来正确处理负值。Pierre Terdiman和Michael Herf的文章详细讨论了如何实现它。简而言之,您将浮点数转换为无符号整数,对它们进行排序,然后将它们转换回浮点数(这是必需的,否则负值将在正值之后错误地排序)。他们的方法的优点是您不会引入任何误差到您的数据中(前提是您的处理器按照IEEE 754标准存储浮点数)。
float
数据,它需要进行32次排序。2**32约为40亿,因此除非你有如此多的数据,否则像归并排序这样的O(N lgN)排序可能会更快。(对于64位的double
,极限是18万亿亿) - AShelly