刚参加了我的第一个数据结构算法课程,我根本不理解它。给我的一个问题是:
将以下功能按顺序排列;也就是说,()应该在你的列表中位于()之前,当且仅当()是(())。
3^2n , 5n lg n + 20n , n^0 , 2^lg n , 16 ^lg n
那我该怎么办?将n替换为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
请注意自己:这真的是基础知识而且非常重要,所以在继续学习课程材料之前,请确保理解这一点。