【发布时间】:2016-05-03 13:52:44
【问题描述】:
好吧,这更像是一个查询,所以我可以理解它在做什么,但是,我有以下代码。照原样,while 循环将返回一个无限循环,我将 while 更改为基本的for(int i=0;i<n;i++) 循环,它可以正常工作并输出。
发生了什么?我实际上不知道为什么我的 while 循环会卡住,但 for 循环不会。
bool binary_search(const string A[], int n, string name, int &count){
count = 0; // Count initialization
int fst = 0;
int lst = n+1; // First, Last and Middle array elements
int mid = 0;
while(fst<=lst)
{
count++;
mid = (fst+lst)/2; // Calculate mid point of array
if (A[mid]==name) // If value is found at mid
{
return true;
}
else if (A[mid]>name)
{ // if value is in lower
lst = mid++;
//cout << "elseIfME!" << endl;
}
else if (A[mid]<name)
{ // if value is in higher
fst = mid--;
//cout << "elseME!" << endl;
}
}
return false;
}
【问题讨论】:
-
您在分配给
fst/lst时发布增量/减量是无用的。
标签: c++ for-loop while-loop binary-search