长度为N的数组可以包含值1,2,3 ... N ^ 2。是否有可能在O(n)时间内排序?

时间:2010-11-21 14:52:16

标签: algorithm sorting radix-sort

给定一个长度为N的数组。它可以包含范围从1到N ^ 2(N平方)的值,包括值,值是整数。是否可以在O(N)时间内对此数组进行排序?如果可能的话怎么办?

编辑:这不是作业。

3 个答案:

答案 0 :(得分:9)

将每个整数写入基数N,即每个x可以表示为(x1,x2),x = 1 + x1 + x2 * N.现在,您可以使用计数排序对其进行两次排序,一次在x1上,一次在x2上,从而生成排序数组。

答案 1 :(得分:8)

是的,您可以使用radix sort使用 N 存储桶和两次传递。基本上,您将数字视为基数 N 中的2位数。

答案 2 :(得分:0)

可以使用radix sortO(n)时间内对任何具有明确定义的最大值的整数数组进行排序。您遇到的任何整数列表都可能出现这种情况。例如,如果您正在排序任意精度整数的列表,那就不是真的。但是所有C积分类型都有明确定义的固定范围。