2014-08-30 76 views
-6

我對我的任務有疑問。 我需要決定什麼是大O表徵這個下面的算法:決定算法的大O符號

enter image description here

我猜對問題1回答是O(n)和問題2是O(log n)的,但我有點困惑 如何說明原因。我的答案是否正確?你能解釋爲什麼這種特徵是這樣的嗎?

+1

我很確定你必須確定這一點。無論您的決定如何,該算法的Big-O性能**都是**。 – 2014-08-30 15:10:18

+0

你的猜測是非常正確的,Q1很簡單,因爲Q2-嘗試搜索二進制搜索的複雜性! – 2014-08-30 15:10:27

+0

Stackoverflow不是要求別人做作業的地方!如果你有一個特定的問題,你已經努力解決,但不能解決,如果你可以說你的問題是一個問題,我們會提供幫助。 – ericbn 2014-08-30 15:14:08

回答

2

問題1:O(n),因爲它按常量(1)遞增。
第一循環O(n)秒循環也O(n)
O(n) + O(n) = O(n)

問題2:O(lg n)它的二進制搜索。

這是O(lg n),因爲問題每次都減半。

如果陣列大小爲n第一秒是n/2n/4 ..... 1

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

0

是的,你的回答是對的。第一個很簡單。 2 單獨for循環。如此有效地它的O(n)

第二個實際上很棘手。實際上,您將輸入大小除以2(一半),這實際上會導致時間複雜度爲O(log n)