공부중

[알고리즘] 순차 탐색(Sequential Serch) 본문

Programing/알고리즘

[알고리즘] 순차 탐색(Sequential Serch)

곤란 2013. 2. 7. 13:53
반응형

 

탐색은 흔히 알고 있는 것 처럼 찾는다는 의미를 가지고 있다.

그 중 먼저 순차탐색에 대해서 알아보자..

 

 

"무식하면 용감하다"

이런 말이 있지 않은가??

 

이 말은 바로 이 탐색을 보고 하는 말인 것 같다.

 

순차탐색은 말 그대로 처음부터 끝까지

하나하나 일일히 차례대로 비교하는것이다.

찾아야 되는 데이터의 수가 10개든 100개든 1000개든

π 소수점 개수만큼 있어도

 

일일히 차례대로 하나하나 비교하는 것이다.

 

이런 무식한 방법은 물론

너무나도 무식해서 찾는데 보통 데이터의 량에 비례하게 속도가 걸린다.

물론 맨 첫 번째에 있으면 고맙겠지만 보통은 그럴일이 없으니 말이다.

 

하지만 이 방법이 주는 장점은 바로

구현이 간단해서 버그를 만들 가능성이 매우 적다.

구현이 쉬워서 배열, 링크드 리스트 모두 쉽게 적용이 가능하다.

 

간단하게 구현해보면 다음과 같다.

 

main.cpp

#include <iostream>

 

static const int ARRAY_MIN = 0;

static const int ARRAY_MAX = 10;

 

int SequentialSearch(const int *DataBank ,const int nSerchVal );

 

int main( )

{

    int nArray[ARRAY_MAX] = { 8,6,4,7,5,1,3,9,2,0 };

 

    int nSerchVal = 0;

 

    while(true)

    {

        std::cout<<"찾고자 하는 숫자를 입력해주세요"<<std::endl;

        std::cout<<"배열안의 숫자는 0 ~ 9까지 입니다."<<std::endl;

        std::cout<<"음수를 입력하면 종료됩니다."<<std::endl;

        std::cin>>nSerchVal;

 

        if( 0 > nSerchVal )

        {

            break;

        }

        else

        {

        std::cout<<"찾는 숫자는"<<SequentialSearch( nArray , nSerchVal )

            <<"번째에 있습니다."<<std::endl;

        }

    }

 

}

 

int SequentialSearch(const int *DataBank ,const int nSerchVal )

{//일반 순차탐색

    for( int nCount = ARRAY_MIN ; ARRAY_MAX > nCount ; ++nCount )

    {

        if( nSerchVal == DataBank[nCount] )

        {

            return nCount;

        }

    }

    std::cout<<"찾고자 하는 데이터가 없습니다."<<std::endl;

    return false;

}

 

출력 결과

 

반응형