基数排序,对浮点数据进行排序

发布于 2024-10-11 06:43:59 字数 43 浏览 1 评论 0原文

基数排序是否能够对浮点数据进行排序,例如 0.5、0.9、1.02 等?

Is radix sort capable of sorting float data for example 0.5, 0.9, 1.02, etc.?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

终陌 2024-10-18 06:43:59

是的,这是可能的。它需要额外的传递才能正确处理负值。 Pierre TerdimanMichael Herf 详细讨论了如何实现它。简而言之,您将浮点数转换为无符号整数,对它们进行排序,然后将它们转换回浮点数(这是必需的,否则负值将错误地排序在正值之后)。

他们的方法的优点是您不会在数据中引入任何错误(前提是您的处理器根据 IEEE 754 标准存储浮点数)。

Yes, it is possible. It requires an additional pass to correctly handle negative values. The articles by Pierre Terdiman and Michael Herf discuss in detail how to implement it. In short, you convert the float to unsigned integer, sort them, and then convert them back to float (this is required, otherwise the negatives values would be incorrectly sorted after the positive ones).

Their method has the advantage that you do not introduce any error into your data (provided that your processor stores the float in accordance to the IEEE 754 standard).

屋顶上的小猫咪 2024-10-18 06:43:59

不是开箱即用的,但您有一些选择。您可以离散化数据,例如,通过乘以 100 并四舍五入(这样,对于上面的示例,您将得到 5、9 和 102)。您还可以对数据进行分桶(按范围对数字进行分组,如 0 < x <= 1、1 < x <= 2),然后在每个桶内进行排序。

Not out-of-the-box, but you have some options. You can discretize the data, e.g., by multiplying by 100 and rounding (so that you would have, for your example above, 5, 9, and 102). You could also bucketize the data (grouping numbers by ranges, as in 0 < x <= 1, 1 < x <= 2), and then sort within each bucket.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文