binary-search相关内容

基本二进制搜索上限和下限之间的区别?

在文章 http://community.topcoder.com中/tc?module = Static& d1 = tutorials& d2 = binarySearch ,作者讨论了二进制搜索.他区分了在发现某物为真时的最低值与发现某物为假的最高值之​​间的区别. 正在搜索的数组类似于: 假假假真是 我很好奇为什么这两种情况不同.为什么不能只找到真实的最低值,然后减去一个就得出 ..
发布时间:2020-06-29 21:12:06 C/C++开发

二进制搜索数组是否包含重复项

嗨, 如果我们使用二进制搜索在以下数组中搜索24,则搜索键的索引是什么. array = [10,20,21,24,24,24,24,24,30,40,45] 我对二进制搜索有疑问,如果数组中有重复的值,二进制搜索如何工作.有人可以澄清一下吗…… 解决方案 您提出的数组的目标值位于中间索引中,在最有效的实现中,该数组将在第一级递归之前返回该值.此实现将返回"5"(中间索引) ..
发布时间:2020-06-12 19:40:06 其他开发

二进制搜索以猜测实数

考虑到一个相当普遍的问题-我正在考虑一个整数,因为我将用“高”,“低”或“就是那个”回答您的猜测,您能在O(log n)时间内猜到它吗! -我遇到一个问题,这个问题略有变化,使我感到困惑: 我在想一个介于1和2之间的正实数N.将我的 数字猜到O(log log log N)时间的小数点后一位。 我尝试解决通过尝试猜测10N而不是N来做到这一点,但这仍然不能为我提供O(log log ..
发布时间:2020-06-03 21:33:21 其他开发

二元搜索与三元搜索

就时间时间和空间而言,二元搜索优于三元搜索吗? 解决方案 两者都具有恒定的空间,但是三元搜索的O时间大是Log_3 N,而不是二元搜索的Log_2 N 因为log_b(N)= log_x(N)/ log_x(b)来登录(N)。 实际上,由于您使用了三元搜索必须在每个步骤进行额外的比较,通常情况下,这会导致整体上进行更多的比较。 2 * Log_3(N)比较vs Log_2(N)比较。 ..
发布时间:2020-06-03 21:32:31 其他开发

使用`Collections.binarySearch`签名实现二进制搜索

这是我在尝试执行必须遵循的二进制搜索的尝试: static int binarySearch(List扩展了Comparable超级T列表,T键) static int binarySearch(List 但是,我想避免代码重复,而是将一种实现委托给另一种实现(当前,将第一种实现委托给第二种实现)。为此,我需要摆脱通配符?并使用第二个通用类型,如下所示: 公共类B ..
发布时间:2020-06-03 21:23:45 Java开发

中点公式溢出错误

我正在学习算法/大o,我对此很好奇。 使用 中=(低+高)/ 2;通常不建议使用 以获取二进制搜索算法的中点,因为可能会发生溢出错误。 mid = low +(high-low)/ 2;为什么会引起溢出错误? 预防此错误? 谢谢。 解决方案 在第一种情况下,您计算的值(低+高)可能太大而无法容纳为int值,如果低和高都足 ..
发布时间:2020-06-03 21:19:03 Java开发

在哪里选择线性搜索而不是二进制搜索

搜索了互联网之后,我无法满足于我发现了一系列综合情况,在这些情况下,线性搜索比二进制搜索更合适。 我本质上是想知道是否有可能汇编出相对确定的建议列表(从行业中可能看到的一般编程的角度来看)。另外,如果可以验证我确实已经看到有关该主题的所有内容,我将不胜感激。 解决方案 您可能无法提出明确的清单。例如,我前一段时间进行了一些测试,以搜索.NET中的排序列表。对于整数排序的列表,当项数为 ..
发布时间:2020-06-03 21:00:04 其他开发

为什么将二进制搜索运行时间复杂度视为log2N

有人说二进制搜索时,我说运行时间复杂度是 O(log n)吗?我在Google中搜索了它,得到了以下内容, “”您可以将搜索空间减半的次数与log 2 n“。 我知道在数据结构中找到搜索关键字之前,我们会做一半的事情,但是为什么我们必须将其视为 log 2 n ?我知道e x 是指数增长,因此 log 2 n 是二元衰减。但是我无法根据对数定义的理解来解释二进制搜索。 解决方案 ..
发布时间:2020-06-03 20:58:49 其他开发

二进制搜索范围

我总是最艰难的时光,而且我还没有看到关于所谓的如此普遍和高度使用的东西的明确解释。 我们已经知道标准二进制搜索。给定开始的上限和下限,找到中间点(lower + high)/ 2,然后将其与数组进行比较,然后相应地重新设置界限,依此类推。 但是,要调整搜索以查找(按升序排列的列表),有什么区别: 最小值> =目标 最小值>目标 最大值 ..
发布时间:2020-06-03 20:57:15 其他开发

超过人数上限的二进制搜索解决方案

对于整数数组,整数元素的 surpasser 是在其右侧上大于其的元素。 例如, {10,3,4,5,2} 是 3 是 4 和 5 和 10 没有任何超越者。 因此,超越者最大数量问题是 给出整数数组 输出超出人数的最大值 基本上,我们需要获取每个元素的超越者数量,最后输出它们的最大值。 例如, {10,3,4,5,2} 的最大超越人数是 2 为 3 有2 ..
发布时间:2020-06-03 20:47:39 其他开发

二进制搜索和二进制搜索树之间的区别?

二进制搜索树和二进制搜索树有什么区别? 它们相同吗?阅读互联网似乎第二个仅适用于树木(最多2个子节点),并且二进制搜索不遵循此规则。我不太明白。 解决方案 二叉搜索树 二叉树中的节点是一种数据结构,它具有一个元素以及对另外两个二叉树(通常称为左子树和右子树)的引用。即,一个节点呈现这样的接口: 节点:$ b​​ $ b元素(某种类型的元素) 左(二叉树或NULL) 右(二 ..

为什么二进制搜索采用分而治之算法?

在考试中,我被问到二元搜索是否是一种分治法。我的回答是肯定的,因为您将问题分为较小的子问题,直到达到结果为止。 但是考官问的是征服部分在哪里,我是无法回答。他们也不同意它实际上是一个分而治之的算法。 但是,无论我在网上走到哪里,都说是这样,所以我想知道为什么, 解决方案 这本书 Java中的数据结构和算法分析,第二版,Mark Allen Weiss ..

在圆形排序数组中搜索元素

我们要在圆形排序数组中搜索给定元素,其复杂度不超过 O(log n)。 示例:搜索 {5,9,13,1,3} 中的 13 。 我的想法是将圆形数组转换为常规排序的数组,然后对结果数组进行二进制搜索,但是我的问题是我出现的算法很愚蠢,在最坏的情况下,它花费 O(n): i = 1; i ..
发布时间:2020-06-03 19:53:54 其他开发

python中的二进制搜索算法

我正在尝试在python中实现二进制搜索,并将其编写如下。但是,无论何时needle_element大于数组中的最大元素,我都无法停止它。 可以帮忙吗? defbinary_search(array,needle_element): mid =(len(array))/ 2 ,如果不是len(array): 引发“错误” ,如果needle_element == array [ ..
发布时间:2020-06-03 19:50:42 Python

使用二进制搜索查找多个条目

我使用标准的二进制搜索来快速返回排序列表中的单个对象(关于可排序属性)。 现在,我需要修改搜索,以便返回 ALL 匹配列表条目。我应该如何最好地做到这一点? 解决方案 好吧,随着列表的排序,所有您感兴趣的条目都是连续。这意味着您需要查找与找到的项目相同的第一项,并从二进制搜索生成的索引中向后看。和最后一项相同。 您可以简单地从找到的索引中倒退,但是如果存在a,则求解的速度可能与 ..
发布时间:2020-06-03 19:50:05 其他开发