31得票10回答
使用二分查找在有重复元素的已排序数组中

我被分配创建一种方法,将打印出在已排序数组中发现值x的所有索引。 我知道,如果我们只是从0到N(数组长度)扫描数组,它的运行时间将是最坏情况下的O(n)。由于将传递到该方法中的数组是排序的,我假设可以利用二分查找,因为这将是O(log n)。然而,这仅适用于具有唯一值的数组。由于二分查找将在...

31得票3回答
为什么在Java中 (high + low) / 2 是错误的,但是 (high + low) >>> 1 不是?

我理解>>>修复了溢出问题:当两个较大的正长整数相加时,可能会得到一个负数。有人能解释一下这个位移操作是如何神奇地解决了溢出问题?以及它与>>有何不同吗? 我的猜想是:我认为这与Java使用二进制补码有关,因此如果我们有额外的空间,则溢出将是正确的数字,但由于我...

31得票15回答
使用二分查找找到多个条目

我使用标准的二分查找来快速返回已排序列表中符合可排序属性的单个对象。 现在我需要修改搜索算法,以便返回所有匹配的列表项。应该如何最好地做到这一点?

30得票7回答
类型错误:列表索引必须是整数,而不是浮点数。

我有一个 Python 3.x 程序出现了错误:def main(): names = ['Ava Fischer', 'Bob White', 'Chris Rich', 'Danielle Porter', 'Gordon Pike', 'Hannah B...

30得票14回答
Swift:标准数组的二分查找?

我有一个排序好的数组,并想在其上执行二分查找。 所以我想知道Swift库中是否已经有像sort等的功能?或者是否有一种与类型无关的版本可用? 当然,我可以自己编写,但我喜欢避免重复造轮子。

28得票16回答
二分查找中的首次出现

我正在调试一些代码,然后发现了一个以前不知道的事情。普通的二分查找会在数据集中返回一个键出现多次的随机索引。我如何修改下面的代码以返回第一个出现的位置?这是人们经常做的吗?//ripped from the JDK public static int binarySearchValue(Inv...

28得票16回答
在循环有序数组中查找元素

我们希望在不超过 O(log n) 的时间复杂度内搜索循环排序数组中的一个元素。 例如:在 {5,9,13,1,3} 中搜索 13。 我的想法是将循环数组转换为常规排序数组,然后在结果数组上执行二分查找,但是我遇到的问题是我想出的算法在最坏情况下需要 O(n) 的时间复杂度:for(i = ...

27得票3回答
在字典中获取最大的键

我有一个键为整数的字典,我想获取最大的键。我没有追踪过这些键,所以它们可能是连续的(例如1,2,3,4,5,6),但可能会跳过一些(1,3,4,5)。不过我认为这并不会产生任何影响。 我应该只使用二分查找还是还有其他方法?就我所看到的,对于这样一个简单的任务,你几乎无法打败二分查找 - 也许...

27得票9回答
STL中返回索引的二分查找?

我需要一个二分查找函数。 我在标准库中没有找到返回已找到元素的索引且如果没找到,则返回下一个大于搜索元素的索引的按位补码的函数。 我正在寻找的是什么函数? 编辑: 我需要将一个元素插入到已排序的向量中并保持其排序。这就是为什么我需要按位取反索引。

26得票2回答
为什么在二分查找中要写成lo+(hi-lo)/2?

我在阅读有关二分查找的内容...我知道传统的查找中间值的方法是这样的:mid=(hi+lo)/2 但我也看到为了避免溢出,中间值是这样计算的。mid=lo+(hi-lo)/2 但是为什么呢?我找不到实际的原因...有人能给我一个带有例子的解释吗?与其他问题不同,因为其他问题没有像我想要的带有例...