用C++在一段代码内实现顺序查找和折半查找
时间: 2024-01-21 17:18:36 浏览: 71
好的,以下是用 C++ 实现顺序查找和折半查找的示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 顺序查找
int sequential_search(vector<int>& arr, int key) {
for (int i = 0; i < arr.size(); i++) {
if (arr[i] == key) {
return i;
}
}
return -1; // 没有找到
}
// 折半查找
int binary_search(vector<int>& arr, int key) {
int left = 0;
int right = arr.size() - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
}
else if (arr[mid] < key) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1; // 没有找到
}
int main() {
vector<int> arr = { 12, 23, 34, 45, 56, 67, 78, 89, 90 };
int key = 34;
int index = sequential_search(arr, key);
if (index != -1) {
cout << "顺序查找:找到了,下标为 " << index << endl;
}
else {
cout << "顺序查找:没有找到" << endl;
}
sort(arr.begin(), arr.end()); // 必须先排序
index = binary_search(arr, key);
if (index != -1) {
cout << "折半查找:找到了,下标为 " << index << endl;
}
else {
cout << "折半查找:没有找到" << endl;
}
return 0;
}
```
在上面的代码中,我们使用了 vector 来存储要查找的数据,然后分别实现了顺序查找和折半查找。其中,折半查找需要先对数据进行排序,因为它是基于有序数据进行查找的。最后,我们在 main 函数中调用这两个函数,并输出查找结果。
阅读全文