/*
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 |