我对编程非常陌生,我目前正尝试使用.txt
为vector
文件中的单词二进制搜索编写代码。如果没有将搜索到的单词写入.txt
文件,程序会检查是否找到该单词。问题是我不太确定我是否正确使用std::vector
而且我差不多确保我的BinarySearch()
功能存在很大问题。我已经在互联网上阅读了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;
答案 0 :(得分:2)
你非常接近。但是你必须学会使用调试器,因为这是一个非常简单的问题。这一行:container
说:
middle
search
个元素
if
else
- 阻止,否则执行if
- 阻止 last
- 块移动string
以按字母顺序搜索较早的if(container[middle] > search)
s,这与您想要的相反。这行应该说:
vector<string>
以下是我更改该字符后代码正常工作的实例:http://ideone.com/vvbONO
听起来这是一个编程任务,在这种情况下,你的老师可能不会对你解决这个问题感到满意,但是既然你已经正确使用了排序BinarySearch
,你也可以使用:{ {3}}完全取代BinarySearch(sWord,find);
。只需替换它:
cout << (binary_search(cbegin(sWord), cend(sWord), find) ? "word is found" : "Not found") << endl;
使用:
"Statement"
如果您有任何疑问,请发表评论!