binary-search 相关问题

二进制搜索是用于在排序数组中查找元素的有效算法。基本思想是在每一步中将搜索空间减半。算法的复杂性为O(log(n))。

使用二进制搜索来查找数字数组中出现奇数次的数字

我可以在第一个示例中做到这一点,但例如,我无法获得正确的答案。我的代码实际上寻找中间位置,并将数组遍历到数组的右侧...

回答 3 投票 1

如何在不使用数组的情况下进行二进制搜索? c ++

[我编写了一个程序,它应该能够从1-1000执行二进制搜索,老师给出的问题要求我们不使用int array [] = {1,2,3,4 ,5 ....} ;, ...

回答 3 投票 0

将字符串按字母顺序存储在二进制文件中

因此,假设我有一个C程序将字符串存储到二进制文件中。然后在另一个二进制文件中,保存每个字符串的第一个字节的位置。例如。 words.bin包含:alphacardelta ...

回答 1 投票 1

二进制搜索没有给出正确的结果

我对以下代码有疑问。我尝试通过二进制搜索在数组中找到给定的k元素。但是功能binSearch不会返回结果。我在StackOverflow中发现了类似的代码,并且...

回答 1 投票 0

为什么我的二进制搜索总是返回-1

我对递归函数非常陌生,正尝试在结构数组中搜索id,为什么它总是返回-1而不是3?这是struct struct Student {int id; }; struct Student ...

回答 1 投票 3


我如何在fortran中完成递归二进制搜索?

我正在尝试在排序数组中找到包含值i的最小索引。如果不存在此i值,我希望返回-1。我正在使用二进制搜索递归子例程。问题...

回答 1 投票 2

如何在我自己的ADT [JAVA]中手动实现二进制搜索

好吧,我坚持如何实现此二进制搜索,该二进制搜索将从其他类接收数据。我正在尝试在自己的ADT中实现它。我已经手动实现了列表ADT,但现在我...

回答 2 投票 0

以下内容是否包含二进制或线性搜索

这里是链接https://pastebin.com/qNN9nhJi这不包含线性搜索吗?还是作为平衡树来改变def lookup_LTE(self,node,time,prev_ans):“”“ ...

回答 1 投票 0

如何正确地递归调用二进制搜索的替代类型(python)? [重复]

我掌握了二进制搜索的要点,但是我很难理解为什么这个不完整的代码(因为我没有指定要在其上进行搜索的那一面)代码甚至都不会返回任何值(例如.. 。

回答 2 投票 0

使用start > 在二进制搜索中,我们通常具有低和高变量,通常有一个while循环来测试是否低<=高,如以下代码所示(来自Wikipedia:]] int SortedArray[max] = {....} int BinarySearch (int key) { int start = 0; int end = max - 1; int mid; while (start <= end) { mid = (start + end) / 2; if (key == a[mid]) return mid; else if (key < a[mid]) end = mid - 1; else start = mid + 1; } return -1; } [学习二进制搜索时,我总是被教导使用start <= end方法,但是当看到其他实现时,我看到很多人都在while(start 一个相对于另一个有优势吗?在我自己的本机实现中,我使用<=方法,但是当将其切换为 使用一个相对于另一个是否有经验法则? 在二进制搜索中,我们通常具有低和高变量,通常有一个while循环来测试是否低<=高,如以下代码所示(来自Wikipedia):int SortedArray [max] = {....} int ... 即使您的问题可能不是很清楚,我也可以推断您正在谈论二进制搜索的这种实现方式(在C中,来自维基百科): int SortedArray[max] = {....} int BinarySearch (int key) { int start = 0; int end = max - 1; int mid; while (start <= end) { mid = (start + end) / 2; if (key == a[mid]) return mid; else if (key < a[mid]) end = mid - 1; else start = mid + 1; } return -1; } 如果将start <= end替换为start < end,则在某些情况下您的算法将无法给出正确的答案。 让我们考虑两个案例。 1-您想在列表[1]中搜索1。在这种情况下,如果更改循环条件,start = 0, end = 0和算法将返回-1。 2-您想在列表[1, 2]中搜索2。在这种情况下,开始= 0,结束=1。算法将在C中设置mid = (0+1)/2=0。因此arr[mid] < key。它将变为start = 1, end = 1。同样,如果您在此处停止循环,则算法将返回-1而不是1。 而且可能还有许多其他示例。 祝你有美好的一天 对于low <= high,将high视为包含 (high是我们考虑的范围的一部分)。 对于low < high,将high视为独占 (high不属于我们考虑的范围)。 两者都是正确的,但是其余的代码会有细微的差别,特别是high的初始化方式(high = length-1与high = length)以及更新方式(high = mid-1与high = mid)。 哪个更好? 主要区别在于,mid = (low + high) / 2在每种情况下都会略有不同。 [更具体地说,high在排除情况下将大1,因此,当high-low在包括情况下为偶数时,mid将保持不变,但是当high-low在包括情况下为奇数时,在特殊情况下,mid将大1个元素(这是由于四舍五入)。 让我们考虑一个例子: length = 6 low = 0 highInclusive = 5, highExclusive = 6 midInclusive = 5/2 = 2, midExclusive = 6/2 = 3 如您所见,当没有单个中间元素时,一个将在左侧选择该元素,而另一个将在右侧选择该元素。 虽然这有时会使一个速度更快,有时会使另一个速度更快,但平均运行时间几乎是相同的。 [从可读性的角度来看,(在我看来)在具有基于0的数组的语言中使用排他的,而从具有基于1的数组的语言中使用一种,可能会更好一些,以最大程度地减少-1的数量在代码中。也可以提出一个论点,即坚持使用所有语言的单一版本,以免人们理解这两种版本或在两者之间感到困惑。

在二进制搜索中,我们通常具有低和高变量,通常有一个while循环来测试是否低<=高,如以下代码所示(来自Wikipedia):int SortedArray [max] = {....} int ...

回答 2 投票 0

我正在尝试在终端中运行二进制搜索算法(Python),但终端上没有显示任何内容

def binary_search(item_list,item):开始= 0结束= len(item_list)-找到1 =假,而(开始<=结束但未找到):中=(开始+结束)//如果item_list [mid]为2 = ...

回答 3 投票 0


简单的二进制搜索对我不起作用。我正在尝试从文本文件中搜索单词

我用C ++构建了一个程序,该程序将txt文件中的单词输入到程序中。然后程序将这些单词存储到数组中。现在,我想使用二进制搜索在数组中搜索特定单词。 ...

回答 1 投票 -2

使我的用户能够使用给定的图块输入另一个单词的附加代码

Hello stachOverflow社区!这是我的第一篇文章,因此,如果我的文章样式不正确和/或我无法在此页面上讨论我发布的内容,请与我裸露。我的java ...

回答 1 投票 1

具有重复项的旋转排序数组中的最小值

我正在尝试查找具有重复项的旋转排序数组中的最小值:我尝试过:def find_pivot(arr):lo = 0 hi = len(arr)-1而lo <= hi:mid =(hi + lo )// 2 ...

回答 1 投票 0

此数组的二进制搜索需要多少次比较?

[我们有以下数组:[4,13,25,33,38,41,55,71,73,84,86,92,97]对我来说,似乎只需要3个比较就可以找到25,因为:首先我们选择中间元素55。现在...

回答 1 投票 1

二进制搜索多次返回错误答案

我已经实现了迭代的二进制搜索算法,该算法返回找到的元素的索引(如果元素不在数组中,则返回-1):public static int binarySearch(int [] array,int target){...

回答 4 投票 0

二进制文件中的二进制搜索

我正在尝试对包含字符串和整数的二进制文件中的字符串执行二进制搜索。 我尝试的代码如下: 尽管从未发现二进制文件中存在 恶习 一词。 我也打印了行,得到了以下结...

回答 0 投票 1

分配最小页数

给出n本书和m个学生中的页数。书以页数的升序排列。每个学生都被分配去读一些连续的书。任务是分配...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.