#include <stdio.h>
int arr[] = { 2, 3, 4, 9, 13, 14};
int LinearSearch(int ar[], int len, int target)
{
int i;
for (i = 0; i < len; ++i) {
if (target == ar[i]) {
printf("INFO: FOUND idx %d\n", i);
return i; //
}
}
printf("INFO: NOT FOUND\n");
return -1;
}
int BinarySearch(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]) {
printf("INFO: FOUND idx %d\n", mid);
return mid;
}
else if (target < ar[mid]) {
last = mid - 1;
}
else {
first = mid + 1;
}
}
printf("INFO: NOT FOUND\n");
return -1;
}
int BinarySearchRecursive(int ar[], int first, int last, int target)
{
int mid;
if (first > last) {
return -1;
}
mid = (first + last) / 2;
if (target == ar[mid]) {
return mid;
} else if (target < ar[mid]) {
return BinarySearchRecursive(ar, first, mid - 1, target);
} else {
return BinarySearchRecursive(ar, mid + 1, last, target);
}
}
int main(void)
{
int idx;
idx = LinearSearch(arr, sizeof(arr) / sizeof(int), 14);
if (idx == -1)
printf("탐색 실패 \n");
else
printf("타겟 저장 인덱스: %d \n", idx);
idx = LinearSearch(arr, sizeof(arr) / sizeof(int), 15);
if (idx == -1)
printf("탐색 실패 \n");
else
printf("타겟 저장 인덱스: %d \n", idx);
idx = BinarySearch(arr, sizeof(arr) / sizeof(int), 14);
if (idx == -1)
printf("탐색 실패 \n");
else
printf("타겟 저장 인덱스: %d \n", idx);
idx = BinarySearch(arr, sizeof(arr) / sizeof(int), 15);
if (idx == -1)
printf("탐색 실패 \n");
else
printf("타겟 저장 인덱스: %d \n", idx);
idx = BinarySearchRecursive(arr, 0, (sizeof(arr) / sizeof(int)) -1, 14);
if (idx == -1)
printf("탐색 실패 \n");
else
printf("타겟 저장 인덱스: %d \n", idx);
idx = BinarySearchRecursive(arr, 0, (sizeof(arr) / sizeof(int)) -1, 15);
if (idx == -1)
printf("탐색 실패 \n");
else
printf("타겟 저장 인덱스: %d \n", idx);
return 0;
}
'Programming > C,C++' 카테고리의 다른 글
class와 OOP 예제 (0) | 2017.01.20 |
---|---|
Callback 예제 코드 (0) | 2017.01.19 |
문자열 비교 후 버블 소트 2 (0) | 2017.01.14 |
문자열 비교 후 버블 소트 (0) | 2017.01.11 |
strstr 문자열 찾기 (0) | 2017.01.11 |