在g(n)之前排列f(n)是什么意思?

时间:2017-07-10 02:30:44

标签: algorithm math big-o

刚参加了我的第一个数据结构算法课程,我根本不理解它。给我的一个问题是:

将以下功能按顺序排列;也就是说,()应该在你的列表中位于()之前,当且仅当()是(())。

3^2n , 5n lg n + 20n , n^0 , 2^lg n , 16 ^lg n

那我该怎么办?将n替换为1并在排序之前处理每个函数?

1 个答案:

答案 0 :(得分:4)

首先,我建议你去阅读the big-O notation。然后,如果您要查看@EugeneS在评论中给出的链接,您会注意到这一点:

O(n^n) > O(n!) > O(α^n) > O(n^α) > O(log(n)) > O(1)

所以让我们分解一下:

1. O(3^2n) = O(α^n)
2. O(5nlogn+20n) = O(nlogn)
3. O(n^0) = O(1)
4. O(2^logn) = O(α^logn)
5. O(16^logn) = O(α^logn)

现在你说

  如果且仅当()是(())时,

()应该出现在列表中的()之前。

你现在可以安排吗?根据你在big-O和上面列表中的理解。 正确的安排是

O(α^n) > O(α^logn) > O(α^logn) > O(nlogn) > O(1)

1 > 5 > 4 > 2 > 3

请注意自己:这真的是基础知识而且非常重要,所以在继续学习课程材料之前,请确保理解这一点。