공부중
[알고리즘] 순차 탐색(Sequential Serch) 본문
탐색은 흔히 알고 있는 것 처럼 찾는다는 의미를 가지고 있다.
그 중 먼저 순차탐색에 대해서 알아보자..
"무식하면 용감하다"
이런 말이 있지 않은가??
이 말은 바로 이 탐색을 보고 하는 말인 것 같다.
순차탐색은 말 그대로 처음부터 끝까지
하나하나 일일히 차례대로 비교하는것이다.
찾아야 되는 데이터의 수가 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; } |
출력 결과
'Programing > 알고리즘' 카테고리의 다른 글
[알고리즘]자기 구성 순차 탐색(Self-Organizing Sequential Search) – 전위법(Transpose method) (0) | 2013.02.07 |
---|---|
[알고리즘]자기 구성 순차 탐색(Self-Organizing Sequential Search) – 전진이동법(Move To Front) (0) | 2013.02.07 |
[알고리즘] 퀵 정렬 (Quick Sort) (0) | 2013.01.29 |
[알고리즘] 삽입정렬 (Insertion Sort) (3) | 2013.01.17 |
[알고리즘] 버블정렬 (Bubble Sort) (0) | 2013.01.17 |