0715 스키마에듀 c언어 자료구조 수업

2023. 7. 15. 00:35스키마에듀 c언어 수업

728x90

3검색알고리즘_bsearch 2.pdf
11.80MB

// bsearch 함수를 사용해 오름차순으로 정렬된 배열을 검색
#include <stdio.h>
#include <stdlib.h>

// 정수를 비교하는 함수(오름차순)
int int_cmp(const int *a, const int *b){

    if(*a < *b){
        return -1; //왼쪽 반토막으로
    }
    else if(*a > *b){ 
        return 1; //오른쪽 반토막으로
    }
    else{
        return 0; //a == b
    }
}

int main(void){
    
    int nx, ky; //요소개수, 탐색값

    puts("bsearch 함수를 사용하여 검색");
    printf("요소 개수: "); scanf("%d", &nx);
    int *x = (int*)calloc(nx, sizeof(int)); //길이가 nx인 int형 배열 x 생성

    printf("오름차순으로 입력하세요.\n");

    printf("x[0]: ");
    scanf("%d", &x[0]);

    for(int i=1; i<nx; i++){
        
        do{
            printf("x[%d]: ",i);
            scanf("%d", &x[i]);
            
        }while(x[i] < x[i-1]);        //배열 앞의 값보다 작으면 다시 입력
       
    }

    printf("검색값: ");
    scanf("%d", &ky);

    int *p = bsearch(
    &ky,
    x,
    nx,
    sizeof(int),
    (int(*)(const void *, const void *)) int_cmp
    );

    if(p == NULL){
        puts("검색 실패");
    }else{
        printf("%d(은)는 x[%d]에 있습니다.\n", ky, (int)(p-x));
    }

    
    free(x);

    return 0;
}

'스키마에듀 c언어 수업' 카테고리의 다른 글

스키마에듀 백준 0729  (0) 2023.07.25
스키마에듀 수업 0721  (0) 2023.07.21
스키마에듀 수업 0713 백준  (0) 2023.07.13
0708 스키마에듀 수업  (0) 2023.07.07
스키마에듀 수업 0708 백준  (1) 2023.07.07