【发布时间】:2010-10-25 08:19:53
【问题描述】:
我一直在自学 Big-O。我了解如何为算法提供以下符号的示例:
O(N):
for(int i = 0; i < n; i++)
sum++;
O(N^2):
for(int i = 0; i < n; i++)
for( int j = 0; j < n; j++)
sum++;
O(N^3):
for(int i = 0; i < n; i++)
for( int j = 0; j < n * n; j++)
sum++;
我遇到了这些我不太理解的符号。我如何在算法方面给出这些例子?
也许我应该这样说:编写一个算法,它的运行时间与以下成比例:
- O((n^3)/4)
- 记录 n^3
- O((log^2)n)+O(n)
- 4^n
- n^3/2
【问题讨论】:
-
问题通常是如何找到特定算法的大 O,
-
这些是 O() 算法的示例。有无数种算法适合任何大 O。请查看 @KMan 的链接。
-
顺便说一句:
O(log^2n)+O(n)没有意义。 O 是一个符号,而不是一个函数,所以你不能添加它。另外,“log^2n”应该是什么意思? -
对不起,我编辑了一些错别字。我在dreamincode.net/forums/topic/125427-determining-big-o-notation 上查看了一些示例,我能够研究一些源自符号的示例,即logN。我想知道我是否也可以从给定的符号中得出例子?我也在查看他的 logN 代码: for(int i = 0; i
标签: java big-o time-complexity