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)
