为算法确定Big-O表示法

时间:2014-08-30 15:04:35

标签: java algorithm data-structures big-o

我对自己的任务有疑问。 我需要确定以下算法的Big-O特征:

enter image description here

我猜测问题1的答案是O(n),问题2是O(log n),但我有点困惑 如何说明原因。我的答案是否正确?你能解释一下这种表征的原因吗?

2 个答案:

答案 0 :(得分:2)

问题1:O(n)因为它以常数(1)递增 第一个循环O(n)第二个循环也O(n)
总计O(n) + O(n) = O(n)

问题2:O(lg n)它的二进制搜索。

O(lg n),因为问题每次都减半。

如果数组的第一秒n大小为n/2,则为n/4 ..... 1

n/2^i = 1 => n = 2^i => i = log(n)

答案 1 :(得分:0)

是的,你的答案是对的。第一个很简单。 2 单独的 for循环。如此有效地O(n)

第二个实际上很棘手。实际上,您将输入大小除以2(一半),这将导致O(log n)的时间复杂度。