Programming/Data Structure and Algorithm

(자료구조) 이진탐색 예제 (윤성우의 열혈 자료구조)

fishersheep 2021. 8. 8. 14:22
반응형

 

#include <stdio.h>
int BSearch(int ar[], int len, int target)
{
	int first = 0;		//탐색 대상의 시작 인덱스값
	int last = len - 1;	// 마지막 인덱스값
	int mid;

	while (first <= last)
	{
		mid = (first + last) / 2;	//탐색 대상의 중앙 찾음

		if (target == ar[mid])	//중앙에 저장값이 타겟이면
			return mid;		//탐색끝
		else        //타겟이 아닐경우
		{
			if (target < ar[mid])	//타겟이 중앙값보다 작은경우
				last = mid - 1;
			else                    //그외의 경우
				first = mid + 1;
		}
	}
	return -1;	//탐색실패할경우 -1 반환
}
int main()
{
	int arr[] = { 1,3,5,7,9 };
	int idx;

	idx = BSearch(arr, sizeof(arr) / sizeof(int), 7);

	if (idx == -1)
		printf("탐색실패\n");
	else
		printf("타겟인덱스: %d\n", idx);

	idx = BSearch(arr, sizeof(arr) / sizeof(int), 4);

	if (idx == -1)
		printf("탐색실패\n");
	else
		printf("타겟인덱스: %d\n", idx);

	return 0;
}
반응형