1

我已经阅读了基数排序的实现,它适用于小于十的 int 数据类型,即它们由一个 sig-fig 代替。(例如 1, 0, 3, 4, 9,... 只是为了清楚)。这个实现并不太难,但是大于 10 的数字呢?如何在第一遍仅比较一个位的数字,然后在第二遍的十位数字进行比较,依此类推,而无需将数组元素显式转换为字符串或字符类型。(或者这只是必要的?)

4

1 回答 1

1

您始终可以将第 n 个数字拉为 v/(10**(n-1)) % 10。

从一位数基数排序到多位通用排序器并非易事。根据您处理数字的顺序,您要么最终跟踪组边界,要么必须使用“稳定”变体。

于 2012-11-13T20:01:29.163 回答