多项目搜索算法用于查找列表中特定元素的所有出现。 与单项搜索算法不同,此方法跟踪目标元素的多次出现并返回其位置列表。
怎么运行的
- 从列表的开头开始。
- 迭代列表中的每个元素。
- 将当前元素与目标值进行比较。
- 如果当前元素等于目标值,则记录其位置。
- 继续处理下一个元素并重复步骤 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 开始)。