C++/summary

선택정렬 && 이진검색

gandus 2010. 4. 20. 15:28

#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;
}