c로 이진탐색을 구현해봤다. 오랜만에 쓴 포인터 덕에 고생좀 했다.
#include <stdio.h>
#include <malloc.h>
int binarysearch(int *x, int k, int n);
int* scaffolding(int n);
int main(){
int n; int k; int *x;
printf("\n배열 크기 : ");
scanf("%d", &n);
x = scaffolding(n);
printf("\n찾고싶은 수 : ");
scanf("%d", &k);
int result = binarysearch(x, k, n);
printf("\nresult : %d\n\n", result);
return 0;
}
int* scaffolding(int n) {
int *x; int i;
x = (int *)malloc(n * sizeof(int));
for(i = 0; i < n; ++i)
x[i] = i * 10;
return x;
}
int binarysearch(int *x, int k, int n) {
int l = 0; int u = n-1; int m;
while(1) {
m = (l+u) / 2;
if(l > u)
return -1;
if(x[m] == k)
return m;
else if(x[m] > k)
u = m-1;
else if(x[m] < k)
l = m+1;
}
}
'Computer Science > Algorithm' 카테고리의 다른 글
insertion sort - c (0) | 2011.05.28 |
---|---|
insertion sort - Java (0) | 2011.05.26 |
binary search - Java (0) | 2011.05.17 |
반전 알고리즘 (0) | 2011.05.12 |
도형 내부 채우기 (0) | 2011.05.11 |