본문 바로가기
C언어

[C언어] 이진 검색을 실행하는 프로그램을 작성하고 테스트하시오 binarySearch(element a[], int begin, int end, element key)

by 이얏호이야호 2022. 12. 11.

공부하시는대에 도움이 됐으면 좋겠습니다.

답안코드 확인해주세요!

 

더보기
#include <stdio.h>
typedef int element;
int i;							// 이진 검색의 연산 횟수

void binarySearch(element a[], int begin, int end, element key) {
	int middle;
	i++;						// 이진 검색 연산 횟수 1 증가
	if (begin == end) {			// 검색 범위가 한 개인 경우
		if (key == a[begin]) printf("%d번째에 검색 성공!\n\n", i);
		else printf("%d번째에 검색 실패! \n\n", i);
		return;
	}

	middle = (begin + end) / 2;  // 검색 범위가 이진 분할되는 기준 위치 설정
	if (key == a[middle])  printf("%d번째에 검색 성공!\n\n", i);
	else if (key < a[middle] && (middle - 1 >= begin))
		binarySearch(a, begin, middle - 1, key);
	else if (key > a[middle] && (middle + 1 <= end))
		binarySearch(a, middle + 1, end, key);
	else printf("%d번째에 검색 실패! \n\n", i);
}

void main() {
	element a[] = { 1, 2, 8, 9, 11, 19, 29 }, key;
	int n = 7;

	i = 0;  printf("\n %d를 검색하라! ->> ", key = 11);
	binarySearch(a, 0, n - 1, key); // 탐색키가 11인 원소 검색

	i = 0;  printf("\n %d를 검색하라! ->> ", key = 6);
	binarySearch(a, 0, n - 1, key); // 탐색키가 6인 원소 검색

	printf("\n %d를 검색하라! ->> ", key = 2);  i = 0;
	binarySearch(a, 0, n - 1, key); // 탐색키가 2인 원소 검색

	getchar();
}

 


더 많은 C코드가 보고 싶다면?

https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4

댓글