algorithm - 关于二分查找中最坏的情况

标签 algorithm search time-complexity binary-search

二分搜索的最坏情况是1 + lg n,但是如果元素位于排序数组中或元素不在排序数组中,这种最坏情况会改变吗?我认为应该花费更少的搜索来确定该元素不在数组中,或者搜索保持不变

最佳答案

假设您必须在最坏的情况下进行 k 次比较才能检查该元素是否在数组中。在最后(kth)比较中,如果键不匹配,则该元素显然不在数组中。因此,如果在第 k 次比较之后该元素不在数组中,则无需再进行任何比较。

因此,无论元素是否在排序数组中,最坏的情况都应该保持不变,k=ceil(log(n))

同样,在线性搜索的情况下,假设键位于​​数组的最后一个位置。我们需要n次比较,如果数组的最后一个元素与键不匹配,我们可以断定该元素不在数组中。我们不需要更多的比较,无论数组中是否存在该元素,最坏的情况都是相同的(在 n 处)。

关于algorithm - 关于二分查找中最坏的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41867265/

相关文章:

php - 在 PHP 中创建 IP 分层列表

java - 搜索扩展名为 .java 的文件

algorithm - 在 O(n) 的列表中对数字平方进行排序?

java - 基于内存的数据存储

excel - 如何在excel VBA中获得天数的差异?

python-3.x - 使用 Python 在另一个列表中搜索一个列表

最小化路径之间切换的算法

algorithm - 如何将 float 转换为分数?

algorithm - 分页算法实现协助

algorithm - 如何在 Unity 中对齐 "tracks"或模块化对象?