티스토리 뷰

목차

    반응형

    C언어 순차탐색, 이진탐색 코드 (Sequential Search, Binary Search)


    C언어로 구현한 두 개의 소스 코드를 소개합니다. 아마도 학교 다닐 때 구했던 소스 같은데 출처는 기억이 안 나네요.


    C언어 순차탐색, 이진탐색 코드 (Sequential Search, Binary Search)[C언어 알고리즘 구현 소스 코드 예제]


    1. C언어 순차탐색 코드 (Sequential Search)



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include<windows.h>
     
    #define MAX_ELEMENTS 10000000L
    int list[MAX_ELEMENTS];
     
    int count;   //수행횟수
     
    int seqsearch(int list[], int n, int searchnum) 
    {
        int i;  // for루프에서 사용될 정수형 변수 i
        count=0;  //수행횟수 0으로 초기화
     
        for(i=0; i<n; i++){    
                count++;      
            Sleep(1); //검색때마다 딜레이를 준다. 
            if (searchnum==list[i])  //입력된 값과 list[i]값이 같으면 
                return i;            // i 의 값을 반환
        }
     
        return -1;
    }
     
    int main()
        int i;             
        int search_number; 
        int return_value;  
        clock_t start,finish;
        clock_t duration; 
     
        printf("배열 초기화중\n");
        for (i=0; i<MAX_ELEMENTS; i++)
            list[i]=i;
                                     
        printf("찾고자 하는 숫자를 입력하시오.\n",&search_number);
        scanf("%d",&search_number);  //탐색 값 입력
     
        start=clock();    
        return_value=seqsearch(list,MAX_ELEMENTS,search_number);
                                                            
        finish=clock();
     
        duration=finish-start;
        printf("%d milliseconds\n", duration);  
            printf("문자의 수행횟수=%d\n",count);     
     
        if(return_value==-1){ 
            printf("발견되지 않았습니다.\n",&search_number);
        }
        else{
            printf("숫자가 위치 %d에서 발견되었습니다.\n",return_value);
        }
     
        return 0;
    }
     
    cs

    2. C언어 이진탐색 코드 (Binary Search)



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <windows.h>
     
    #define MAX_ELEMENTS 10000000L 
    int list[MAX_ELEMENTS]; 
    int count;
     
    int binsearch(int list[], int n, int searchnum)
        int left=0;   
        int right=n-1
        int middle;  
     
        while(left<=right){ 
            count++
            Sleep(1);
            middle=(left+right)/2
            if(searchnum==list[middle]){  
                return middle;  
            }
            else if(searchnum            right=middle-1;     
            }
            else{                           
                left=middle+1;  
            }
        }
        return -1;          
    }
     
    int main()
    {
        int i;        
        int search_number; 
        int return_value;  
        clock_t start,finish;  
        clock_t duration;
     
        printf("배열 초기화중\n");    
        for (i=0; i<MAX_ELEMENTS; i++)            
            list[i]=i;  
     
        printf("찾고자 하는 숫자를 입력하시오.\n",&search_number);
        scanf("%d",&search_number);
     
        start=clock();
        return_value=binsearch(list,MAX_ELEMENTS,search_number);
         
        finish=clock(); 
     
        duration=finish-start; 
        printf("%d milliseconds\n", duration); 
            printf("문자의 수행횟수 =%d\n",count);
     
        if(return_value==-1){  
            printf("발견되지 않았습니다.\n",&search_number);
        }
           else{
            printf("숫자가 위치 %d에서 발견되었습니다.\n",return_value);
        }
        return 0;
    }
    cs


    C언어 순차탐색, 이진탐색 코드 (Sequential Search, Binary Search)

    반응형