为啥我们不能在跳转搜索中使用二分搜索而不是线性搜索?

Posted

技术标签:

【中文标题】为啥我们不能在跳转搜索中使用二分搜索而不是线性搜索?【英文标题】:Why can't we use binary search in jump search instead of linear search?为什么我们不能在跳转搜索中使用二分搜索而不是线性搜索? 【发布时间】:2017-05-28 15:08:39 【问题描述】:

以下文章解释了跳转搜索:

http://www.geeksforgeeks.org/jump-search/

最后一步是线性搜索。 如果数组已经排序并且二分查找的时间复杂度是 log(n) 而线性查找的时间复杂度是 n,为什么我们不能使用二分查找?

【问题讨论】:

【参考方案1】:

跳转搜索 (O(√n)) 优于二分搜索 (O(log n)) 的用例是当跳回成本高昂时。在跳转搜索中替换线性搜索在这方面会适得其反。

【讨论】:

您能否详细说明跳回成本更高的任何场景? “跳回来很昂贵”是指更多的缓存未命中吗? @Shubham 我们可能正在从旋转介质中读取数据,其中向前扫描成本低,随机搜索成本高。

以上是关于为啥我们不能在跳转搜索中使用二分搜索而不是线性搜索?的主要内容,如果未能解决你的问题,请参考以下文章

线性和二进制搜索

什么时候顺序搜索比二分搜索好?

如何使用伪代码开发线性搜索和二分搜索算法。?

为啥我的线性搜索总是返回 false,即使该项目在数组中?

线性搜索和二分搜索有啥区别?

二分搜索与线性搜索奇怪的时间