이분검색 알고리즘 보고 나름 만들었는데
1~10 안에 있는 수는 찾아지는 것 같긴 한데
10 넘어 선 수도 찾는다고 나오네..
어디서 잘못 됐는지 모르겠어;;
하도 간만에 C를 잡아서 감이 다 떨어졌나봐 ㅠㅠ
도와줘 횽아들!!
----------------------------------------------------
// Binary Search
#include<stdio.h>
int binarysearch(int A[], int n, int key){
int first=0, mid=0, last=n;
while(first<=last){
mid = (first+last)/2;
if(A[mid]=key) return mid;
else{
if(A[mid]>key)
last=mid-1;
else
first=mid+1;
}
}
return -1;
}
void print(int A[], int n){
for(int i=0; i<n; i++)
printf(\"%d \",A[i]);
printf(\"\\n\");
}
int main(void){
int arr[10]={ 1,2,3,4,5,6,7,8,9,10 };
int returnVal;
print(arr, 10);
returnVal = binarysearch(arr, 10, 11);
if(returnVal>0)
printf(\"Found 11 \\n\");
else
printf(\"Not found 11 \\n\");
return 0;
}
if(A[mid]=key) return mid; 저기에 조건을 A[mid]==key로 고쳐봤셔?
배열 index 는 0 부터 9니깐 \"last = n\" 이 부분도 고쳐야 되는거 아닙가요 늅늅
지나가던늅 횽 때문에 생각났다- 나도 늅늅
아놔.. 쪽팔린 실수 했네.. 고마워횽들 ㅠㅠ