본문 바로가기
C++ 200제/코딩 IT 정보

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

by vicddory 2018. 10. 1.

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)

댓글