设计一个函数模板find,用于对一个有序数组采用二分法查找指定数据的元素下标。用int,char型数据进行测试。
时间: 2024-03-13 11:43:13 浏览: 32
好的,下面是我为您设计的函数模板find:
```c++
#include <iostream>
#include <cstring>
using namespace std;
template <typename T>
int find(T arr[], int size, T target) {
int left = 0, right = size - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 没有找到
}
int main() {
int intArr[] = {1, 2, 3, 4, 5};
char charArr[] = {'a', 'b', 'c', 'd', 'e'};
int intIndex = find(intArr, 5, 3);
int charIndex = find(charArr, 5, 'c');
cout << "intIndex: " << intIndex << endl;
cout << "charIndex: " << charIndex << endl;
return 0;
}
```
上述函数模板中,使用了模板参数T来表示数组元素的类型。在函数体中,采用二分法查找目标元素的下标,如果找到了返回下标,否则返回-1。在main函数中,分别用int型和char型数组测试了函数模板。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)