C언어 이진탐색에서 데이터검색 질문입니다.
조회수 774회
#include<stdio.h>
#include<stdlib.h>
int idxsearch(int ar[], int first, int last, int target) {
int mid = (first + last) / 2;
if (first > last)
return -1;
else {
if (ar[mid] == target)
return mid;
else {
if (ar[mid] > target) {
last = mid - 1;
idxsearch(ar, first, last, target);
}
else {
first = mid + 1;
idxsearch(ar, first, last, target);
}
}
}
}
int main() {
scanf_s(" %d", &num);
int *inorder = malloc(sizeof(int)*num);
int *levelorder = malloc(sizeof(int)*num);
for (int i = 0; i < num; i++)
scanf_s(" %d", &inorder[i],sizeof(int));
for (int j = 0; j < num; j++)
scanf_s(" %d", &levelorder[j],sizeof(int));
printf("\n");
printf(" %d\n", idxsearch(inorder, 0, num-1, 3));
printf(" %d\n", idxsearch(levelorder, 0, num-1, 1));
//printsol();
free(levelorder);
free(inorder);
}
첫번째 열에는 몇개의 데이터를 입력할 것인지가 나오고 두번째 열에는 입력한 갯수만큼 데이터를 넣습니다.
의도 입력한 데이터를 토대로 해당 인덱스가 어디인지 출력하는 프로그램
입력데이터 3 3 2 1 3 2 1
이렇게 하면 출력이 0 2 가 되어야 정상이지만
아무것도 찾을 수 없다는 -1 -1 를 출력하게 되는데 도통 모르겠습니다..
환경은 windows 10 이며, visual studio 2017로 작성하였습니다.
답변주시면 정말 감사하겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력