코드 비교 – 선형 탐색과 이진 탐색

C로 구현한 선형 탐색
int list[n], x, n; // list는 리스트, x는 찾으려는 수
int idx = 0;

while (idx < n && list[idx] != x) 
	idx++;
if (idx < n) 
	printf("\n<선형 탐색> x의 인덱스는 %d가 됩니다\n", idx);
else if (idx == n) 
	printf("\n<선형 탐색> x가 리스트에 존재하지 않습니다\n");

시간복잡도: O(n)


C로 구현한 이진 탐색

int list[n], x, n; // list는 리스트, x는 찾으려는 수
int high, low, mid;
low = 0; high = n - 1;

while (low <= high) {
	mid = (low + high) / 2;
	if (list[mid] == x) {
		printf("\n\n<이진 탐색> x의 인덱스는 %d가 됩니다\n", mid);
		break;
	}
	else if (x > list[mid]) 
		low = mid + 1;
	else 
		high = mid - 1;
	} // list[0]>x or list[n-1]<x -> low>high가 됨 

if (low > high) 
	printf("\n<이진 탐색> x가 리스트에 존재하지 않습니다\n");

시간복잡도: O(logn)


Leave a Reply

Your email address will not be published. Required fields are marked *