/*
 recursive function binary search
    */

void inputData(int nDataStart, int nDataSize, int* data);
void showArray(int* data, int nArraySize);
int binarySearch(int* data, int nKey, int nLeft, int nRight);

#include <stdio.h>
int main()
{
 printf("Input Data Start Number\n");
 int nDataStart=0;
 scanf("%d", &nDataStart);
 
 printf("Input Data Size\n");
 int nDataSize=0;
 scanf("%d", &nDataSize);
 
 int* data = new int[nDataSize];
 
 inputData(nDataStart, nDataSize, data);
 
 showArray(data, nDataSize);
 
 printf("Input Key Number\n");
 int nKey=0;
 scanf("%d", &nKey);

 int nIndex=binarySearch(data, nKey, 0, nDataSize);
 
 printf("index = %d\n", nIndex);

 return 0;

}

void inputData(int nDataStart, int nDataSize, int* data)
{
 int nCount=0;
 for(int i=nDataStart; i<nDataStart+nDataSize; i++)
 {
  data[nCount]=i;
  nCount++;
 }
}

void showArray(int* data, int nArraySize)
{
 for(int i=0; i<nArraySize; i++)
 {
  printf("Array -%d = %d\n",i,data[i]);
 }
}

int binarySearch(int* data, int nKey, int nLeft, int nRight)
{
 if(nLeft<=nRight)
 {
  int mid=(nLeft + nRight)/2;
  if(data[mid]==nKey)
   return mid;
  else if(data[mid]<nKey)
   return binarySearch(data, nKey, mid+1, nRight);
  else
   return binarySearch(data, nKey, nLeft, mid-1);
 }
}

'프로그래밍 > 기본 알고리즘' 카테고리의 다른 글

recursive sum - 재귀 합 정렬 N to M  (0) 2014.04.29
recursive sum - 재귀 합  (0) 2014.04.29
insertion sort - 삽입 정렬  (0) 2014.04.29
두 값 중 가장 큰 값 찾기  (0) 2014.04.29
Fibonacci - 피보나치  (0) 2014.04.29

+ Recent posts