C언어 이분탐색 질문
글쓴이: rhkdwls52 / 작성시간: 금, 2018/05/04 - 6:24오후
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로 작성하였습니다.
답변주시면 감사하겠습니다..
Forums:
참고해보세요.
http://codepad.org/29OAJQ9r
//출력 결과
현재 값 : 50
검색 횟수 확인 : 1
찾는값이 중간값 보다 작으면. 중간값 부터 왼쪽으로 검색
현재 값 : 30
검색 횟수 확인 : 2
찾는값이 중간값 보다 크다면. 중간값 부터 오른쪽으로 검색
현재 값 : 40
검색 횟수 확인 : 3
찾는값이 중간값과 같으면. 찾았다.
return 0
return 0
0
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
감사합니다!
열심히 공부하겠습니다.
idxsearch --> return
idxsearch --> return idxsearch
댓글 달기