티스토리 뷰
목차
반응형
C언어 순차탐색, 이진탐색 코드 (Sequential Search, Binary Search)
C언어로 구현한 두 개의 소스 코드를 소개합니다. 아마도 학교 다닐 때 구했던 소스 같은데 출처는 기억이 안 나네요.
[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)
반응형