Computer Science/Algorithm2011. 5. 16. 21:24
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
Posted by 준피