二进制搜索的问题
Trouble with Binary Search
there.我正在尝试对文本文件进行二进制搜索。我正在比较文本文件一和文本文件二。但是,我的二进制算法似乎无法打印出它找到的元素。我的文本文件 2 是一个排序列表,我的文本文件 1 是键。我需要一些关于如何解决这个问题的指导。这是我的代码:
bool binary_search(const vector<string>& sorted_vec, const vector<string>& key) {
size_t mid, left = 0;
size_t right = sorted_vec.size(); // one position passed the right end
while (left < right) {
mid = left + (right - left)/2;
for(int i=0;i<sorted_vec.size();i++){
if (key[i] > sorted_vec[mid]){ //
left = mid+1;
}else if (key[i] < sorted_vec[mid]){
right = mid;
}else{
return true;
}
}
return false;
}
}
搜索键在 binary_search 实现中 for 循环的每次迭代中都会更改。修改您的实现以采用单个键,并为您的键向量围绕它包装一个 for 循环。但是,我同意您应该使用std::binary_search
@H2CO3
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> sorted_vec = {1, 2, 3, 4, 5, 6, 7, 8};
vector<int> keys = {3, 5, 19, 27, 0, 2};
int main() {
for(const auto &key : keys) {
cout << binary_search(sorted_vec.cbegin(), sorted_vec.cend(), key) << endl;
}
}
输出
1
1
0
0
0
1
如果您希望使用自己的binary_search,则需要修复当前的实现。
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- c++binary_search函数排序数组(流行名称搜索)出现问题
- 这是一个二叉搜索树吗?黑客排名问题
- Sinlge 链表,C++,删除所有和搜索功能的问题
- 插入操作的二叉搜索树代码问题
- 我的模板二叉搜索树类给出了错误"Node<T>: no appropriate default constructor available,"如何解决这个问题?
- 如何使用C 中的广度优先搜索解决8个式嘴问题
- CTC梁搜索和TensorFlow C API的问题
- 如何使用二叉搜索树的索引生成器解决此问题
- 错误 C2676;在C++的二叉搜索树类中定义 ++ 运算符时遇到问题
- 在二叉搜索树中插入时出现问题
- C++数组长度的二进制搜索问题
- Qt C++macOS问题。我正在使用函数 .find( "a word") 在多集中搜索单词,它适用于 Windows 但不适用于 mac
- 二叉搜索树插入数据问题
- 二叉搜索树析构函数问题
- 我的二叉搜索树插入逻辑有什么问题?
- 链接列表中的搜索功能问题
- 实施星级搜索C 的问题
- 性能问题C++ - 搜索数组