使用大 O 符号比较两种算法
Comparing two algorithims with the BigO notation
我想弄清楚这两种算法中哪一种最慢以及 n 的大小有什么影响。
算法是:
6n^2 + 9
n^2 + 9n
你其实可以证明他们都是O(n²)
。这是为什么?
- 如果
f(n) = 6n² + 9
,则:
O(f(n)) ∈ O(6n² + 9)
,则:
O(f(n)) ∈ 6 * O(n²) + 9 * O(1)
,则:
O(f(n)) ∈ O(n²)
用类似的方法你可以证明g(n) = n² + 9n
又是O(n²)
阶的。您还可以比较函数以查看 n
第二个函数需要更多步骤才能完成,然后您会发现第一个函数总是需要 more.
但是,由于它们都是O(n²)
,那么你可以假设它们同样是fast/slow,除非你找到一个函数是g(n)
的上限并且f(n)
.
的下限
我想弄清楚这两种算法中哪一种最慢以及 n 的大小有什么影响。
算法是:
6n^2 + 9
n^2 + 9n
你其实可以证明他们都是O(n²)
。这是为什么?
- 如果
f(n) = 6n² + 9
,则: O(f(n)) ∈ O(6n² + 9)
,则:O(f(n)) ∈ 6 * O(n²) + 9 * O(1)
,则:O(f(n)) ∈ O(n²)
用类似的方法你可以证明g(n) = n² + 9n
又是O(n²)
阶的。您还可以比较函数以查看 n
第二个函数需要更多步骤才能完成,然后您会发现第一个函数总是需要 more.
但是,由于它们都是O(n²)
,那么你可以假设它们同样是fast/slow,除非你找到一个函数是g(n)
的上限并且f(n)
.