공부중
[알고리즘]자기 구성 순차 탐색(Self-Organizing Sequential Search) – 전위법(Transpose method) 본문
[알고리즘]자기 구성 순차 탐색(Self-Organizing Sequential Search) – 전위법(Transpose method)
곤란 2013. 2. 7. 17:14전위법은 찾고자 하는 해당 데이터를 찾았을 시
바로 이전 항목과 교환한다
그 외에는 전진 이동법과 같다..
7 | 4 | 2 | 10 | 8 | 6 | 1 | 3 | 9 | 5 |
여기 이러한 데이터 집합이 있다. 여기서6을 찾아보자.
↓ | |||||||||
7 | 4 | 2 | 10 | 8 | 6 | 1 | 3 | 9 | 5 |
6을 찾았다!
7 | 4 | 2 | 10 | 6 | 8 | 1 | 3 | 9 | 5 |
6의 앞에 있는 8과 자리 교환을 한다.
main.cpp |
#include <iostream>
static const int ARRAY_MIN = 0; static const int ARRAY_MAX = 10;
int TransposeMethod(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<<"찾는 숫자는"<< TransposeMethod( nArray , nSerchVal ) <<"번째에 있습니다."<<std::endl; } }
}
int TransposeMethod(int *DataBank, const int nSerchVal) {//전위법 for( int nCount = ARRAY_MIN ; ARRAY_MAX > nCount ; ++nCount ) { if( nSerchVal == DataBank[nCount] ) { const int nIndexTemp = nCount; const int nTemp = DataBank[nCount];
if( 0 == nIndexTemp ) { //이동할 필요가 없음 } else { DataBank[nIndexTemp] = DataBank[nIndexTemp-1]; DataBank[nIndexTemp-1] = nTemp; } return nIndexTemp; } } std::cout<<"찾고자 하는 데이터가 없습니다."<<std::endl; return false; } |
출력결과
'Programing > 알고리즘' 카테고리의 다른 글
[알고리즘]달팽이 알고리즘 (0) | 2015.11.06 |
---|---|
[알고리즘]자기 구성 순차 탐색(Self-Organizing Sequential Search) – 전진이동법(Move To Front) (0) | 2013.02.07 |
[알고리즘] 순차 탐색(Sequential Serch) (0) | 2013.02.07 |
[알고리즘] 퀵 정렬 (Quick Sort) (0) | 2013.01.29 |
[알고리즘] 삽입정렬 (Insertion Sort) (3) | 2013.01.17 |