【问题标题】:cmpfunc in bsearch() in cc 中 bsearch() 中的 cmpfunc
【发布时间】:2017-04-04 14:41:51
【问题描述】:

我正在从一本编程书中学习函数指针的使用。在那里我发现了 bsearch() 和 qsort() 的用法。这两个函数都有一个函数指针cmpfunc的参数。

在 qsort() 中需要 cmpfunc 来比较两个元素。

我不明白为什么在 bsearch() 中需要 cmpfunc 以及它是如何工作的。

请帮助我。提前致谢。

【问题讨论】:

  • 我只能假设您的意思,但通常您将比较函数传递给排序函数以允许用户选择自己的排序方案,即允许用户按升序或降序对元素进行排序,或者按照它们的值 mod 5 或任何你喜欢的东西对它们进行排序。

标签: c function-pointers


【解决方案1】:

根据this 文档,需要bsearch 比较器函数,类似于使用qsort 函数的函数,来评估数组中元素的所需候选。如果包含所需的元素或在每次迭代中丢弃一半的搜索空间,则需要终止搜索;作用与qsort函数中的作用相同。

【讨论】:

    【解决方案2】:

    bsearch 中调用比较函数cmpfunc 来判断被检查的元素是否实际匹配键,如果不匹配,则键将在列表中更早还是更晚。

    【讨论】:

    • 感谢@Ross Presser。
    猜你喜欢
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多