Algorithm/Do it

[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 3장 검색 연습문제 Q6 답안 p.128

Bonita SY 2019. 11. 4. 23:06
728x90
반응형

Q6. 요소의 값이 내림차순으로 정렬된 long형 배열에서의 검색을 bsearch 함수를 사용하여 프로그램을 작성하세요.

 


답안)

#include <stdio.h>
#include <stdlib.h>

int long_cmpr(const long *a, const long *b)
{
  if(*a < *b)
    return 1;
  else if (*a > *b)
    return -1;
  else
    return 0;
}

int main(void)
{
  int i, nx;
  long  ky, *x, *p;

  puts("bsearch 함수를 사용하여 검색");
  printf("요소 개수 : ");
  scanf("%d", &nx);
  x = calloc(nx, sizeof(long));
  printf("x[0] : ");
  scanf("%ld", &x[0]);
  for(i=1; i<nx; i++) {
    do {
      printf("x[%d] : ", i);
      scanf("%ld", &x[i]);
    } while(x[i] > x[i-1]);
  }

  printf("검색값 : ");
  scanf("%ld", &ky);
  p = bsearch(&ky, x, nx, sizeof(long), (long(*)(const void *, const void *))long_cmpr);

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

  free(x);
  return 0;
}

실행결과)

sy@sy:~/algorithm/doit/chap03$ ./q6
bsearch 함수를 사용하여 검색
요소 개수 : 3
x[0] : 79
x[1] : 68
x[2] : 57
검색값 : 57
57는(은) x[2]에 있습니다.
728x90
반응형