Dav*_* R. 1 sorting algorithm radix-sort
我有一个 n 个整数的数组,它只能假设log n 个可能的值(和任何值)。例如,在 中S = [349,12,12,283,349,283,283,12],只有 3 个不同的数字(log 8 = 3)。
我必须在短时间内对这个数组进行排序O(nlogn)。我应该使用哪种算法?也许基数排序和计数排序?它的分析呢?
由于假定只有log(n)唯一元素,因此您可以O(n)使用以下算法及时获得排序列表:
O(n)步骤。log(n)根据键对上述大小的元组列表进行排序。
k*log(k),其中k是输入的大小。k为log(n),我们得到这一步的复杂度为O(log(n)*log(log(n)))。O(log(n)*log(log(n)))< O(n),所以直到这一步的整体复杂性是O(n) + O(log(n)*log(log(n))),这相当于O(n)再次。O(n)迭代。所以总的来说,上面的算法将在 O(n) 时间内运行。