> 백엔드 개발 > C++ > C 프로그램에서는 부동 소수점 연산을 사용하지 않고 유리수를 검색하기 위해 이진 검색 알고리즘을 사용합니다.

C 프로그램에서는 부동 소수점 연산을 사용하지 않고 유리수를 검색하기 위해 이진 검색 알고리즘을 사용합니다.

WBOY
풀어 주다: 2023-08-27 18:05:05
앞으로
495명이 탐색했습니다.

C 프로그램에서는 부동 소수점 연산을 사용하지 않고 유리수를 검색하기 위해 이진 검색 알고리즘을 사용합니다.

이 문제에는 정렬된 유리수 배열이 제공됩니다. 부동 소수점 연산을 사용하지 않고 이 유리수 배열의 주어진 요소를 검색하려면 이진 검색 알고리즘을 사용해야 합니다.

유리수는 p/q 형식으로 표현되는 숫자입니다. 여기서 p와 q는 모두 정수입니다. 예를 들어 ⅔, ⅕입니다.

이진 검색은 배열의 중간을 보고 요소를 찾는 검색 기술입니다.

부동 소수점 연산이 허용되지 않는 이진 검색을 사용하여 정렬된 유리수 배열에서 요소를 찾는 데 사용됩니다. 분자와 분모를 비교하여 어떤 원소가 더 큰지, 어떤 원소가 발견되는 원소인지 알아내겠습니다.

Example

이를 위한 프로그램을 만들어 보겠습니다.

#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));
}
로그인 후 복사

Output

Element found at index 2
로그인 후 복사

위 내용은 C 프로그램에서는 부동 소수점 연산을 사용하지 않고 유리수를 검색하기 위해 이진 검색 알고리즘을 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿