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)