#include <iostream>
using namespace std;
#define NUM 10
int binary_search(int list[],int key);
void main ()
{
int i , j , temp=0;
int a[NUM]= {0};
int search;
for (i=0; i< NUM; i++)
{
cout<< i+1 <<" 번째 값을 입력하시오 : ";
cin>> a[i]; cout<<endl;
}
for (i=0; i< NUM - 1; i++)
for (j=i+1 ; j< NUM ; j++)
if ( a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
for(i=0; i< NUM; i++)
{
cout<<a[i] <<endl;
}
cout<<"선택 정렬된 값"<<endl<<endl;
cout<<"검색할 값을 입력하시오. : ";
cin>> search; cout<<endl;
cout<< binary_search(a , search )<< " 검색한 값은 입니다."<<endl;
}
int binary_search(int list[],int key)
{
int low, high, middle;
low = 0;
high = NUM-1;
while( low <= high ){ // 아직 숫자들이 남아있으면
middle = (low + high)/2; // 중간 요소 결정
if( key == list[middle] ) // 일치하면 탐색 성공
return middle;
else if( key > list[middle] )// 중간 원소보다 크다면
low = middle + 1; // 새로운 값으로 low 설정
else
high = middle - 1; // 새로운 값으로 high 설정
}
return -1;
}