자료구조
[알고리즘/c] 이분검색
닥스훈스
2019. 4. 2. 17:55
정렬된 S에 x가 몇번째에 있는지 찾는 알고리즘
#include <stdio.h>
void main(){
int S[] = {10,12,13,14,18,20,25,27,30,35,40,45,47};
int x;
printf("찾고자 하는 값을 입력하세요:");
scanf_s("%d", &x);
int x_result;
x_result = location(S, 0, sizeof(S)/sizeof(int)-1, x);
if(x_result==-1){
printf("값이 없습니다.");
}else{
printf("S[]={");
for(int i=0; i<sizeof(S)/sizeof(int); i++){
printf("%d ", S[i]);
}
printf("}\n");
printf("배열의 %d번째 요소에 있습니다.", x_result);
}
}
int location(int S[], int low, int high, int x){
int mid;
if(low>high){
return -1;
}
else{
mid=(low+high)/2;
if(x==S[mid]){
return mid;
}
else if(x<S[mid]){
return location(S, low, mid-1, x);
}
else{
return location(S, mid+1, high, x);
}
}
}
<실행 화면>