二元搜索中比较次数的递归关系

时间:2017-08-15 09:31:58

标签: algorithm binary-search recurrence

我怀疑二元搜索中比较次数的递归关系。

我读到本网站的复发可以写成T(n)= T(n / 2)+ 1 http://faculty.simpson.edu/lydia.sinapova/www/cmsc250/LN250_Weiss/L14-RecRel.htm

据我说它应该是T(n)= T(n / 2)+ 2,因为在最坏的情况下,元素可能不存在于数组中,我们最终在每次传递中进行2次比较。

请告诉我是对还是错。

1 个答案:

答案 0 :(得分:1)

我认为你是对的。

恕我直言,compare a b表示我们同时了解a=ba>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