한 걸음씩..

이진검색 본문

프로그래밍

이진검색

smdy0426 2011. 10. 17. 16:04
반응형

return 값은 findingValue의 인덱스값. 없으면 -1
같은 값이 중복될 수 있음. 중복되면 첫번째 위치를 반환할 것
입력값이 매우 많을 수 있으므로 주의할 것.

int BinarySearch(int findingValue, int vec[], int vecLen )
{
int Left = 0 , Right = vecLen;
int Center = vecLen / 2;

  
if((vec[Right-1] < findingValue) || (vec[Left] > findingValue))
{
return FAIL;
}
  
while(Left <= Right)
{
Center = (Left + Right) / 2;
if(vec[Center] < findingValue)
{
Left = Center + 1;
}
else if (vec[Center] > findingValue)
{
Right = Center - 1;
}
else if(vec[Center] == findingValue)
{
if(vec[Center-1] == findingValue)
{
Right = Center - 1;
}
else
{
return Center;
}
}
}
return FAIL;
}  


반응형

'프로그래밍' 카테고리의 다른 글

계산기 (후위표현식)  (0) 2011.10.17
reverse  (0) 2011.10.17
htoi  (0) 2011.10.17
주석 제거 함수  (0) 2011.10.17
[MFC] 최단거리 알고리즘  (0) 2011.10.17