Java 对32位数字使用基数排序

Java 对32位数字使用基数排序,java,radix-sort,Java,Radix Sort,我想知道,当我有一个整数列表,需要对它们进行排序时, 我知道它们是32位的整数,我能用基数排序(计数排序作为它的稳定排序)在o(n)时间内对它们进行排序吗 它不只是32个计数排序,使用从LSB开始的数字的位表示吗 我知道,以前不知道数字的一般排序取o(nlogn),但它们是32位整数这一事实不是我使其成为o(n)排序所需要的全部吗 谢谢 是的!基数排序对无符号整数很有效,对有符号整数也很有效(只需稍微多做一点工作) 有趣的是,如果将非NaN、非负浮点数的位重新解释为整数,则它也适用于非NaN、非

我想知道,当我有一个整数列表,需要对它们进行排序时, 我知道它们是32位的整数,我能用基数排序(计数排序作为它的稳定排序)在o(n)时间内对它们进行排序吗

它不只是32个计数排序,使用从LSB开始的数字的位表示吗

我知道,以前不知道数字的一般排序取o(nlogn),但它们是32位整数这一事实不是我使其成为o(n)排序所需要的全部吗


谢谢

是的!基数排序对无符号整数很有效,对有符号整数也很有效(只需稍微多做一点工作)


有趣的是,如果将非NaN、非负浮点数的位重新解释为整数,则它也适用于非NaN、非负浮点数。(负浮点数需要做更多的工作,可能不值得。)

可以,但内存使用量可能会很大。基准。对于小n,由于开销,这将比nlogn搜索慢。它变得更好的地方(如果有)是你自己去寻找的,这取决于目标机器的不同比特的相对速度。你可以使用,它需要
o(nk)
时间。基数排序只是
o(n)
,在这个意义上,你可以(有时)用常量
log(maxN)替换
log(n)
组件
。如果你不需要知道每一个都有多少个,即一个排序集,你可以使用两个位集。这是Java,你在哪里找到了“无符号”整数?在广义计算机科学中。教一个人钓鱼,以及所有这些。@ElliottFrisch-他们没有RSA签名,因此是“未签名的”。基数排序可以正常工作,但在o(n)时间内可以工作吗?我的意思是,你可以说我用log(n)位来表示0-n范围内的整数,但是根据这些假设,知道我使用的是32位整数系统,我能肯定基数排序是o(n)吗?@Guy是的。当可能的整数数固定为常数时,基数排序为O(n)。(顺便说一句,注意大写字母O;“little-O”是不同的意思,几乎肯定不是你的意思。)