在给定最大值时,如何以最有效的方式对数组进行排序?

时间:2018-01-02 09:27:02

标签: algorithm sorting time-complexity

假设我有一个大小为n的数组,该数组的最大值为k。

我们假设k=log(sqrt(n))并且我想以最有效的方式对此数组进行排序,为此,我已经简化了等式,以kn得到n=2^2k我有Θ(n^(2))这是我的数组大小。

现在,如果我应用Θ(2^(4k))的任何排序算法,时间复杂度将等于n Θ(n^2)这将是Θ(nlogn) ,如果我应用Θ(k*2^(2k))排序算法,我将Θ(nlog(sqrt(n))),并且就ni来说,k=n^n这将是最有效的时间复杂度,我做到了这一点吗?

如果我假设Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Label1.Location = New Point(50, 70) End Sub 我可以使用与以前相同的方法吗? 为此,我没有用k表示使用相同方法的数组大小,还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

知道要排序的数组中的最大元素值k可能会有所帮助,特别是如果在您的情况下k< ñ。在这种情况下,您可以使用counting sort,运行时间为O(n + k)