[정보처리기사] 이분 검색 - C언어 구현



#include <stdio.h>

#define MAX 10

int main()
{
	int arr[MAX];
	int i, j=1;
	int HIGH, LOW, MID;

	//배열 공간 초기화
	for(i=0 ; i<MAX ; i++)
	{
		arr[i] = j;
		j += 2;
	} 

	printf("0을 입력하면 종료");
	
	while(1)
	{
		bool state(1);
		int key;

		LOW = 0;
		HIGH = MAX;
		MID = (LOW+HIGH)/2;

		//배열 공간의 내용을 보여줌
		for(i=0 ; i<MAX ; i++)
		{
			printf("%2d번지 : %2d\n", i+1, arr[i]);
		}

		//키 값을 입력
		printf("\nkey값을 입력하세요 : ");
		scanf("%d", &key);
		if(key <= 0) return 0;

		//2진 검색
		while(state == 1)
		{
			MID = (LOW+HIGH)/2;

			if(arr[MID] == key)
			{
				printf("%d번지에 있습니다.\n\n", MID+1);
				state = 0;
			}
			if(key < arr[MID])
			{
				if(arr[MAX-1]<key)	
					state = 0;

				HIGH = MID-1;
			}
			if(key > arr[MID])
			{
				LOW = MID+1;
			}
		}
		//printf("값이 없습니다.");
	}

	return 0;
}

작성자

Posted by 사용자 오뇽

태그

관련 글

댓글 영역