- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对二分查找中比较次数的递归关系有疑问。
我在这个网站上读到递归可以写成 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 次比较。
请告诉我我是对还是错。
最佳答案
我认为你是对的。
恕我直言,compare a b
意味着我们知道 a=b
, a>b
或 a<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
),而不是数学方程式的精确结果。
我认为这里重要的是 1
和 2
都是常数时间。我们也可以拆分==
, >
进入机器指令,它可能大于2
.或者也许某些编程语言或 CPU 利用比较,它只花费 1
比较。但是这里在做渐近分析的时候无所谓。
关于algorithm - 二分查找比较次数的递归关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45690194/
我正在尝试编写一个程序,在名为 items 的数组中进行顺序搜索和二分搜索,该数组具有 10000 个已排序的随机 int 值。第二个名为 targets 的数组加载了 1000 个 int 值(50
当我尝试使用图表并为其编写一些代码但没有成功时,我遇到了一个问题:/!! 我想创建一些东西来获取图形数据并检查它是否:1- 连接2-二分法3-有循环4-是一棵树 所以我想知道,例如,是否可以将其写入以
我是一名优秀的程序员,十分优秀!