정렬된 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);
}
}
}
<실행 화면>
'자료구조' 카테고리의 다른 글
[JAVA/자료구조] 컬렉션 프레임 워크(Collections Framework) (0) | 2019.06.08 |
---|---|
[JAA/자료구조] List와 Array차이 (0) | 2019.06.08 |
[JAVA/자료구조] 큐(Queue) (0) | 2019.06.06 |
[JAVA 자료구조] 스택(Stack) (0) | 2019.05.22 |
[알고리즘/c] 합병정렬 (0) | 2019.04.02 |