프로그래밍/C

이진탐색 C언어 코드

swedu 2023. 2. 24. 09:11
728x90
반응형

2023.02.24  최초 작성

 

 

#include <stdio.h>
#define SIZE 20
int binary_search(int list[], int size, int search) {
	int low, middle, high;
	int searchIndex = -1;
	low = 0;
	high = size - 1;
	while (low <= high) {
		printf("탐색범위 : %d ~ %d\n", low, high);
		middle = (low + high) / 2;
		
		if (search > list[middle]) {
			low = middle + 1;
		}
		else if(search < list[middle]){
			high = middle - 1;
		}
		else {
			searchIndex = middle;
			break;
		}
	}
	if (searchIndex > -1) {
		printf("찾았습니다. %d의 위치 : %d", search, searchIndex);
	}
	else {
		printf("%d를 찾지 못했습니다.", search);
	}
}
void main() {
	int list[SIZE] = { 1,3,5,7,11,12,17,19,22,29,31,33,41,43,44,57,61,70,71,80 };
	int search;
	printf("탐색할 수:");
	scanf("%d", &search);
	binary_search(list, SIZE, search);
}

[실행 결과]

탐색할 수:12
탐색범위 : 0 ~ 19
탐색범위 : 0 ~ 8
탐색범위 : 5 ~ 8
탐색범위 : 5 ~ 5
찾았습니다. 12의 위치 : 5

 

 

 

728x90
반응형

 

728x90
반응형

'프로그래밍 > C' 카테고리의 다른 글

다익스트라 C언어 코드  (0) 2023.02.28
깊이우선탐색(DFS)와 너비우선탐색(BFS) C언어 코드  (0) 2023.02.27
순차탐색 C언어 코드  (0) 2023.02.24
큐 C언어 코드  (0) 2023.02.22
원형 큐 C언어 코드  (0) 2023.02.22