我对编程非常陌生,我目前正在尝试编写代码,以便使用.txt对vector文件中的单词进行二进制搜索。程序会检查是否将未搜索到的单词写到.txt文件中。问题是我不太确定我是否正确使用了std::vector,而且几乎可以肯定我的问题很大BinarySearch()函数。我已经在Internet上阅读了binary_search的几乎所有代码,但我无法使其正常工作。我真的可以帮忙... txt文件已排序(每行一个字)。当前代码在15个字中只找到2-3个。这是我的最新尝试: void BinarySearch(vector<string> cont,string s){ int middle; int first=0; int leng=cont.size(); int last=leng-1; bool found=false; while(first<=last && !found) { middle=(first+last)/2; if(cont[middle]==s) { found=true; } else { if(cont[middle]<s) { last=middle-1; } else { first=middle+1; 最佳答案 你太亲密了。但是您必须学习使用调试器,因为这很简单。这行:if(container[middle]<search)说:在container处获取middle的元素与search比较如果按字母顺序更早执行,请执行if块,否则执行else块if块移动last以按字母顺序搜索更早的string,这与您想要的相反。这行应该说:if(container[middle] > search)这是我更改该字符后代码完美运行的实时示例:http://ideone.com/vvbONO听起来这是一个编程任务,在这种情况下,您的老师可能不会对您这样解决问题感到满意,但是由于您正确使用了已排序的vector<string>,因此您还可以使用:binary_search完全替换您的。只需替换为:BinarySearch(sWord,find);带有:cout << (binary_search(cbegin(sWord), cend(sWord), find) ? "word is found" : "Not found") << endl;如有疑问,请评论!关于c++ - 单词的二进制搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36946900/
10-11 23:22