Maison > développement back-end > C++ > Dans le programme C, utilisez un algorithme de recherche binaire pour rechercher des nombres rationnels sans utiliser l'arithmétique à virgule flottante

Dans le programme C, utilisez un algorithme de recherche binaire pour rechercher des nombres rationnels sans utiliser l'arithmétique à virgule flottante

WBOY
Libérer: 2023-08-27 18:05:05
avant
536 Les gens l'ont consulté

Dans le programme C, utilisez un algorithme de recherche binaire pour rechercher des nombres rationnels sans utiliser larithmétique à virgule flottante

Dans ce problème, on nous donne un tableau trié de nombres rationnels. Nous devons utiliser un algorithme de recherche binaire pour rechercher un élément donné de ce tableau de nombres rationnels sans utiliser d'opérations à virgule flottante.

Les nombres rationnels sont des nombres exprimés sous la forme p/q, où p et q sont tous deux des nombres entiers. Par exemple, ⅔, ⅕. La

Recherche binaire est une technique de recherche qui trouve des éléments en regardant au milieu d'un tableau.

Utilisé pour rechercher des éléments dans un tableau trié de nombres rationnels à l'aide de la recherche binaire, où les opérations en virgule flottante ne sont pas autorisées. Nous comparerons le numérateur et le dénominateur pour savoir quel élément est le plus grand ou quel élément est celui à trouver.

Exemple

Créons un programme pour cela,

#include <stdio.h>
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));
}
Copier après la connexion

sortie

Element found at index 2
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal