while (head <= tail) {
if (Choice == possibleNumbers[(head + tail)/2]) {
foundNumber = true;
break;
}
else if (Choice < possibleNumbers[(head + tail)/2]) {
tail = (head + tail)/2 - 1;
}
else
head = (head + tail)/2 + 1;
}
return foundNumber;
}
这是我在课堂上做过的一个搜索者实验室的一部分。
答案 0 :(得分:2)
如果你担心代码的长度,我建议赞成清晰而不是简洁。对它进行编码通信,并且代码的可读性和可扩展性比它简短更重要。
如果这是生产代码,我会说使用库方法 - 我认为这相当于Arrays.binarySearch
,但看起来你是在做练习。
我建议的一种代码样式更改 - break
会使循环逻辑更难以遵循。如果您将条件更改为while (head <= tail && !foundNumber)
,那么您可以将其删除。