问题标签 [bsearch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C中的Bsearch函数无法正常工作
基本上,我正在创建一个程序,如果在给定数组中找到该数字,则将输出该数字,如果未找到则输出-1。(排序数组。)
输入 :10
-1 -1 6 1 9 3 2 -1 4 -1
输出 :
-1 1 2 3 4 -1 6 -1 -1 9
我的输出:
-1 -1 -1 3 4 -1 -1 -1 -1 -1
c++ - 使用 bsearch() 获取多个 key 实例
有没有办法实现bsearch()
找到多个 key 实例。
例如:(obj*)bsearch(key=r,arr,elements,sizeof(obj),(int(*)(const void*, const void*)bcompare);
我目前编写的代码只能找到第一个实例,并且由于它的工作原理,无法继续找到第一个实例。
变量:
- p - 是指向 Info 类对象的指针
- 目标- char 的 arr
- list - obj 的 arr
- foundIndex - 找到的元素的索引
- Info - 从基类派生的类
**比较功能
我不能使用其他方法,例如std::find
或编写自己的二进制搜索函数,必须使用bsearch()
我尝试了 else 块内的循环,以及使用变量 foundIndex 的比较函数,以及在通过 obj 列表 arr 循环的返回值上使用 while 循环。有没有办法从特定索引开始。我很感激任何帮助。我不是在寻找代码,而是在朝着正确的方向总体推进。谢谢你。
警告- 当前代码按预期编译和运行,但是我自己无法弄清楚我想要的功能。Google 和 Stackoverflow 上的搜索没有产生相关问题。
c - gperf 在具有相互依赖的外键的结构上
我可能有很多静态数据,包括需要解析的其他静态数据的外键。我希望将数据文件作为常量编译到我的程序中。我编写了一个简单的C
代码生成器,将类型信息作为输入,
而数据,
并根据类型信息生成一个.h
文件,
并.c
来自组合类型信息和数据。例如,这会将外键解析为Alice
as &auto_animal[0]
which is a Bear
。
输出已排序,以便我可以bsearch
在其上运行。如果我将程序与自动生成的源链接,
它给,
但是,我不必搜索。我想gperf
在整个“数据库”上运行并在O(1)
. gperf
和我的加载器都输出完成C
的代码,但我无法在不知道另一个表中的位置的情况下解析外键。有什么方法可以自动化外键闭包和完美的哈希表,而不涉及为 编写完整的解析器C
?
c - bsearch() 总是返回空指针
我正在尝试在预先排序的数组中查找用户输入字符串。如果我编写自己的二进制搜索函数,则可以正确找到输入。如果我使用 C bsearch,我总是得到一个 NULL 指针。
这是相关的代码片段:
char input[max_len]
是结果scanf("%s", input); uppercase(input);
char **words
是大写字符串的预排序数组
int curr_idx
是的最大索引words
int max_len
words
是(当前为 18)中的字的最大长度,以字节为单位
我尝试输入我知道在数组中的字符串,以及我知道不在数组中的字符串,并且每种情况都返回一个 NULL 指针。
在 gdb 中设置断点并检查 and 的内容input
,words
似乎没有任何不正确的地方:
编辑添加 MCVE:
该malloc()
位是不必要的,但旨在尽可能接近地复制原始程序。
ruby - 什么是 Ruby 的 bsearch find-minimum 和 find-any 行为?
我正在阅读Ruby 的 bsearch 文档。
似乎当块返回 true 或 false 时,bsearch 使用“find-minimum”模式工作。有没有找到最大值模式?
对于以下第 3 到第 5 种情况,我不太了解 Ruby 的 bsearch 查找最小行为:
- 对于第三种情况,为什么找不到
20
? - 对于第 4 种情况,为什么它也找不到
20
?(第一个小于 50)。 - 对于第 5 种情况,为什么它找到
10
而不是20
?
此外,似乎 bsearch 将find-any
在块不返回 true 或 false 时使用该模式,而是返回一个数字。但我无法真正理解它在文档中做了什么:
比如什么是1 - x / 4
什么,它在做什么?
ruby - 使用 Ruby 的 array.bsearch_index(),是否有一种优雅的方式来查找数组中最近的索引,以便 array[i] 小于数字 n?
我不得不使用类似的东西
返回值-1
意味着没有这样的索引。如果数字可以是浮动的怎么办,所以你不能寻找49
when n
is 50
。现在的代码有点乱。有没有更优雅的方法来做到这一点?
(也许这就是bsearch_index()
它的方式:nil
在找不到时返回......所以我们只需要使用bsearch(){ } || arr.length
将其转换回严格的数字 - 这就是它的方式。bsearch_index
要么只返回数字,要么它可以返回nil
作为设计决策,它选择了返回nil
。但我不确定我们是否只需要使用上面的代码。也许find-any
模式bsearch_index
或某种方式可以做到并且更优雅。)
PS使用 reverse() 操作或否定每个元素或某物可能会很有趣,但由于这些是 O(n),它违背了使用二进制搜索使用O(lg n)解决方案的目的,我们可以做一个线性搜索。
c - 在 C 中使用带有结构数组的 bsearch() 函数
我有一个结构数组,我想在结构数组中找到一个整数键。我的结构如下所示:
我想用来bsearch()
在数组中找到那个特定的值,即区域。qsort()
我有一个按升序排序的对数组。我的代码如下所示:
我尝试使用调试器查看这些值,并且bsearch()
总是返回 NULL 不知道为什么。我怀疑我的比较功能是问题所在,但它看起来像这样:
我尝试了不同的比较功能,但没有一个有效。我对你的想法持开放态度。谢谢你。
c - C 中的 bsearch() 在新的 gcc 版本 7.4.0 中给出分段错误
我在 C 中有一个旧程序,它使用C 库中的bsearch()
函数strcmp()
。在旧的 gcc version4.4.7 中,它运行正常。但是在最新的 Ubuntu 18.04 和 gcc 版本 7.4.0 中,它给出了分段错误。代码如下:
它在旧 gcc 版本 4.7.7 中给出bsearch()
输出"wA"
,但在 gcc7.4.0 中给出分段错误。任何解决此问题的帮助表示赞赏。
c - 如何在 c 中使用 bsearch 在结构中搜索数组
请帮助我不明白为什么我不能将一个结构中的数组中的元素搜索到另一个结构中的另一个数组。感谢您的帮助,伙计们将不胜感激。
c - bsearch 无法搜索小于其前一个元素的元素
我一直在从事涉及搜索数组的活动,我目前正在使用 bsearch 来解决这个问题。问题是,只要该元素小于其前一个元素,bsearch 就无法搜索它。更重要的是,当我正在搜索的元素位于大于或等于 3 的索引中时,就会开始出现此问题。我正在用 C 编码。请我非常需要你们的帮助,我们将不胜感激。这是我的代码: