用C++代码:使用模板类对给定的查找集合顺序查找与给定值k相等的元素,还能对给定的查找集合折半查找与给定值k相等的元素。
时间: 2023-11-22 16:56:14 浏览: 64
以下是 C++ 代码示例,其中包含顺序查找和折半查找的模板类实现:
```cpp
#include <iostream>
#include <vector>
template <typename T>
class Search {
public:
// 顺序查找
static int sequentialSearch(std::vector<T>& arr, T k) {
for (int i = 0; i < arr.size(); i++) {
if (arr[i] == k) {
return i;
}
}
return -1;
}
// 折半查找
static int binarySearch(std::vector<T>& arr, T k) {
int left = 0;
int right = arr.size() - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == k) {
return mid;
} else if (arr[mid] < k) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
};
int main() {
std::vector<int> arr = {1, 3, 5, 7, 9};
int k = 3;
int index1 = Search<int>::sequentialSearch(arr, k);
int index2 = Search<int>::binarySearch(arr, k);
if (index1 == -1) {
std::cout << "顺序查找:未找到元素" << std::endl;
} else {
std::cout << "顺序查找:元素" << k << "在数组中的下标为" << index1 << std::endl;
}
if (index2 == -1) {
std::cout << "折半查找:未找到元素" << std::endl;
} else {
std::cout << "折半查找:元素" << k << "在数组中的下标为" << index2 << std::endl;
}
return 0;
}
```
在上面的代码中,我们使用了模板类 `Search` 来实现顺序查找和折半查找。在 `main` 函数中,我们定义了一个 `int` 类型的向量 `arr`,并对其进行了顺序查找和折半查找。最后,我们输出了查找结果,包括元素是否被找到以及其在数组中的下标。