在O(n)时间内对0到n的整数数组进行排序,其中包含n位数

时间:2012-01-31 16:12:19

标签: algorithm sorting big-o

我正在尝试创建一个可以在O(N)时间内对整数数组进行排序的算法。

  • 所有整数中的位数为N
  • 每个元素都有未知的位数
  • 算法应该在O(N)时间内对数组进行排序,而不管数字的分布方式

我有一个解决这个问题的工作方案,在O(N)时间运行,我只是在试图证明它是这样做时遇到了麻烦。

Create a set of N buckets and add items to their corresponding bucket based off how
many digits are in the integer -O(N)

Radix sort each bucket, and then concatenate the buckets back together. 
Sum k=0 to N of O(k*n)
k = Number of digits
n = number of items with k digits

我提出的解决方案是∑k*∑n将始终等于N。

尝试提供证据

Base case: Array has 1 item.
T(N)= k*1. k=N = O(N)

我不确定如何进行归纳步骤(如果需要的话)。

1 个答案:

答案 0 :(得分:2)

以下屏幕截图解释了它:

screenshot