在C程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术

在c程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术

在这个问题中,我们得到了一个有理数的排序数组。我们必须使用二分搜索算法来搜索该有理数数组的给定元素,而不使用浮点运算。

有理数是以 p/q 形式表示的数字,其中p 和 q 都是整数。例如,⅔、⅕。

二分搜索是一种搜索技术,通过查找数组的中间来查找元素。

用于查找使用二分法搜索有理数排序数组中的元素,其中不允许浮点运算。我们将比较分子和分母,以找出哪个元素更大或哪个元素是要找到的元素。

示例

让我们为此创建一个程序,

#include struct Rational {   int p;   int q;};int compare(struct Rational a, struct Rational b) {   if (a.p * b.q == a.q * b.p)      return 0;   if (a.p * b.q > a.q * b.p)      return 1;   return -1;}int binarySearch(struct Rational arr[], int l, int r, struct Rational x) {   if (r >= l) {      int mid = l + (r - l)/2;   if (compare(arr[mid], x) == 0) return mid;   if (compare(arr[mid], x) > 0)      return binarySearch(arr, l, mid-1, x);   return binarySearch(arr, mid+1, r, x);   }   return -1;}int main() {   struct Rational arr[] = {{1, 4}, {2, 3}, {3, 2}, {7, 2}};   struct Rational x = {3, 2};   int n = sizeof(arr)/sizeof(arr[0]);   printf("Element found at index %d", binarySearch(arr, 0, n-1, x));}

输出

Element found at index 2

以上就是在C程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:40:38
下一篇 2025年12月12日 22:40:04

相关推荐

  • 寻找二次方程的根的C程序

    In this tutorial, we will be discussing a program to find the roots of the Quadratic equation. Given a quadratic equation of the form ax2 + bx + c. Ou…

    2025年12月17日
    000
  • C程序在一个单一数组上执行两个半部分的操作

    问题 编写一个程序来接受一个由N个元素组成的一维数组,并将其分成两半。稍后,将前半部分按升序排序,后半部分按降序排序。 解决方案 在单个数组中对两个半部分执行两次操作的解决方案C语言解释如下 – 前半部分升序排序的逻辑如下 – for (i=0; i<b; ++i){ …

    2025年12月17日
    000
  • 使用C程序进行线程同步,按顺序打印数字

    给定线程,程序必须根据它们的优先级从0到10打印线程。 什么是线程? 线程是在程序内部运行的轻量级进程。一个简单的程序可以包含n个线程。 与Java不同,C/C++语言标准不支持多线程,POSIX线程(Pthreads)是C/C++中多线程的标准。C语言不包含任何内置的多线程应用程序支持,而是完全依…

    2025年12月17日
    000
  • 使用正则表达式的C++程序打印每个单词的首字母

    A useful tool for string operations is regex. This may be found in virtually all high-level当前的编程语言,包括C++。正则表达式(Regex)被用作通用搜索模式。例如,通过构建一个简单的字符串被称为正则表达式…

    2025年12月17日
    000
  • 使用赋值运算符计算带税金额的C程序

    问题 编写一个 C 程序,输入美元金额,然后添加 18% 的税金来显示金额。 解决方案 让我们考虑餐厅人员在顾客的每张账单上加收 18% 的税。 用于计算税的逻辑是 – value=(money + (money * 0.18)); 这笔钱应该乘以18%并添加到钱中,然后餐厅人员可以从顾…

    2025年12月17日
    000
  • 使用C语言编写的二分查找程序,使用pthread进行多线程处理

    我们知道二分查找方法是一种最适合和有效的排序算法。这个算法适用于已排序的序列。算法很简单,它只是从中间找到元素,然后将列表分成两部分,并向左子列表或右子列表移动。 我们知道它的算法。现在我们将看到如何在多线程环境中使用二分查找技术。线程的数量取决于系统中存在的核心数。让我们看一下代码以了解思路。 示…

    2025年12月17日
    000
  • C++程序来计算给定弧度值的双曲正弦

    普通三角函数类似于双曲函数,它们是使用双曲线而不是圆来定义的。在双曲几何中,双曲函数用于计算角度和距离。此外,它们还出现在许多线性微分方程、三次方程等的答案中。对于给定的角度$theta$。双曲正弦函数 sinh$(theta)$ 如下所示。 $$mathrm{sinh(x):=:frac{e^x:…

    2025年12月17日
    000
  • C++程序以找到给定值的反正切

    我们在三角学中最常使用的比率包括正弦、余弦、正切等等。您可以使用角度来计算这些比率。如果我们知道比率值,我们还可以使用反三角函数计算角度。 本课程将向您展示如何使用 C++ 的反正切 (arctan) 函数,使用正切值(以弧度为单位)计算角度。 atan() 函数 使用 atan() 技术和反三角正…

    2025年12月17日
    000
  • C程序计算线性回归

    问题 编写一个程序来实现线性回归算法。 用户需要输入总共的数值个数。 解决方案 使用C编程语言计算线性回归的解决方案如下: 线性回归通过将线性方程与观测数据相连接来找到两个变量之间的关系。一个变量是解释变量,另一个是因变量。 关于线性回归的逻辑如下所述: for(i=0;i<n;i++){ p…

    2025年12月17日
    000
  • 如何使用C#编写二分查找算法

    如何使用C#编写二分查找算法 二分查找算法是一种高效的查找算法,它在有序数组中查找特定元素的位置,时间复杂度为O(logN)。在C#中,我们可以通过以下几个步骤来编写二分查找算法。 步骤一:准备数据 首先,我们需要准备一个已经排好序的数组作为查找的目标数据。假设我们要在数组中查找特定元素的位置。 i…

    2025年12月17日
    000
  • c程序是由什么构成

    c程序是由函数构成,是由一个main函数和若干个其他函数构成的。函数是C程序的基本单位,被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己定义的函数。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 C源程序是由函数组成的。函数是C程序的基本单位,被调用的函数可以是…

    2025年12月17日
    000
  • c程序如何编写x的y次方

    c程序编写x的y次方的方法:首先新建一个c语言的工程文件;然后定义两个参数n和k,分别表示输入的数和要求的次方数;最后用递归的方式将n乘以不断减小的k即可完成n次方的计算。 本文操作环境:windows7系统,Dell G3电脑/C11。 c程序怎么编写x的y次方? 新建一个c语言的工程文件,引入头…

    2025年12月17日 好文分享
    000
  • c语言程序总是从main函数开始执行吗?

    是的,一个C程序总是从main函数开始执行,而不论其在程序中的位置。在main函数中可以调用程序中的其他函数,而其他函数却不可以调用main函数;程序最后再从main函数中结束。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 C程序的执行总是从main函数开始,在main函…

    2025年12月17日
    000
  • 一个c程序的执行是从哪里开始到哪里结束

    一个C程序的执行是从main函数开始到main函数结束。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性。 本文操作环境:windows10系统、thinkpad t480电脑。 一个C程序的执行是从main函数开始到…

    2025年12月17日
    000
  • C程序的完整开发过程包括哪几步

    C程序的完整开发过程包括:1、编辑;2、编译;3、连接;4、运行。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。 开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。 (相关推荐:java课程) C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。…

    2025年12月17日
    000
  • c程序的执行是从什么开始到什么结束?

    C程序的入口是main函数,一般来说只要是正常运行结束的都是从main函数的第一句话开始,最后一句结束。 例如: int main()//程序开始{printf(“Hello!n”);return 0;//程序结束,返回值} 但如果程序执行到中间遇到 return(main函数里的) exit(不管…

    2025年12月17日 好文分享
    000
  • 一个c程序的执行是从什么开始到什么结束

    一个c程序的执行是从“main()”函数开始到“main()”函数结束,但是当代码中出现了exit函数,则是直接结束程序。 推荐:《c语言教程》 一个c程序的执行是从main()函数开始到main()函数结束。 一个C语言的执行是从本程序的main函数开始,到main函数结束,但需要注意的是,也是有…

    2025年12月17日
    000
  • c程序中宏展开是在什么时候进行的?

    c程序中宏展开是在什么时候进行的? 宏展开是在预处理阶段进行的。 C程序由源程序变为可执行文件的三个阶段是: 预处理阶段,由预处理器对程序文本中的宏进行展开。 编译阶段,由编译器对经过预处理后的程序进行编译,并生成目标文件 链接阶段,则链接器对目标文件和用到的函数库文件进行链接,生成可执行文件。 因…

    2025年12月17日
    000
  • C程序总是以main函数作为程序执行的起始行,对么

    c程序总是以main函数作为程序执行的起始行,对。 (推荐教程:C语言教程) 一个C程序总是从main函数开始执行,而不论其在程序中的位置。在main函数中可以调用程序中的其他函数,而其他函数却不可以调用main函数。程序最后再从main函数中结束。 main函数介绍: main函数,又称主函数,是…

    2025年12月17日
    000
  • 用c程序实现的算法必须要有输入个输出操作吗

    用c程序实现的算法必须要有输入个输出操作吗? 用C程序实现的算法可以没有输入但必须要有输出! 算法具有的5个特性是:有穷性;确定性;可行性;有0个或多个输入;有一个或多个输出。所以说,用C程序实现的算法可以没有输入但必须要有输出。 推荐:《c语言教程》 C语言是目前世界上最流行、使用最广泛的面向过程…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信