다중 항목 검색 알고리즘은 목록에서 특정 요소의 모든 항목을 찾는 데 사용됩니다. 단일 항목 검색 알고리즘과 달리 이 접근 방식은 대상 요소의 여러 항목을 추적하고 위치 목록을 반환합니다.
작동 방식
- 목록의 처음부터 시작하십시오.
- 목록의 각 요소를 반복합니다.
- 현재 요소를 대상 값과 비교합니다.
- 현재 요소가 대상 값과 같으면 해당 위치를 기록합니다.
- 다음 요소로 계속 진행하고 3~4단계를 반복합니다.
- 전체 목록을 반복한 후 기록된 위치 목록을 반환합니다.
예
정수 목록을 고려하고 숫자 23의 모든 항목을 찾으려고 합니다.
목록: {12, 23, 45, 23, 56, 23, 89, 90}
- 처음부터 시작: 12. 원하는 번호가 아닙니다.
- 다음 요소로 이동: 23. 일치 항목을 찾았고 위치를 1로 기록합니다.
- 다음 요소로 이동: 45. 원하는 번호가 아닙니다.
- 다음 요소로 이동: 23. 일치 항목을 찾았고 위치를 3으로 기록합니다.
- 다음 요소로 이동: 56. 원하는 숫자가 아닙니다.
- 다음 요소로 이동: 23. 일치 항목을 찾았고 위치를 5로 기록합니다.
- 다음 요소로 이동: 89. 원하는 번호가 아닙니다.
- 다음 요소로 이동: 90. 원하는 숫자가 아닙니다.
- 반복 후 위치 목록을 반환합니다: [1, 3, 5].
C++의 예제 코드
#include <iostream>
#include <vector>
std::vector<int> multipleItemSearch(const std::vector<int>& arr, int target) {
std::vector<int> positions;
for(int i = 0; i < arr.size(); ++i) {
if(arr[i] == target) {
positions.push_back(i);
}
}
return positions;
}
int main() {
std::vector<int> numbers = {12, 23, 45, 23, 56, 23, 89, 90};
int target = 23;
std::vector<int> result = multipleItemSearch(numbers, target);
std::cout << "Occurrences of " << target << " found at positions: ";
for(int pos: result) {
std::cout << pos << ";
}
std::cout << std::endl;
return 0;
}
주어진 예에서 multipleItemSearch
함수는 정수 목록에서 숫자 23의 모든 항목을 찾는 데 사용됩니다. 결과는 모든 발생 위치를 포함하는 벡터가 됩니다(위치는 0부터 시작).