2017-08-15 81 views

回答

1

我認爲你是對的。

恕我直言,compare a b表示我們知道a=b,a>ba<b在同一時間。也就是說,1個比較可能有3個不同的結果。

但是對於編程語言。我們必須使用2個比較。

if mid == x:  found it!   # 1st 
else if mid < x: search right  # 2nd 
else:    search left 

你指的是==< 2個比較。

雖然它不影響結果。因爲我們使用大O符號來表示複雜性。這只是一個不變的問題,但O通常不關心它。

根據master theorem+1+2將導致相同的複雜性O(log n)

我們想要的通常是一個極限(Big-O),而不是一個數學方程的精確結果。

我認爲這裏重要的是12都是恆定時間。我們也可以將==,>分成機器說明,它可能會大於2。或者,也許一些編程語言或CPU利用這種比較,它只需花費1比較。但在進行漸近分析時,這並不重要。


  1. https://en.wikipedia.org/wiki/Master_theorem
  2. https://en.wikipedia.org/wiki/Asymptotic_analysis
+0

是的,我不同意,計算的時間複雜度時,也沒關係,因爲它只是一個常數。但是,如果我們要計算比較次數,那麼比較次數可能會根據遞歸關係而改變。 – Zephyr