在“java中的数据结构和算法”一书中,提供了以下数组搜索方法代码:
{
int j;
for(j=0; j< nElems; j++) // for each element,
if( a[j].getLast().equals(searchName)) // found item?
break; // exit loop before end
if(j == nElems) // gone to end?
return null; // yes, can't find it
else
return a[j]; // no, found it
}
我想了解为什么需要if(j == nElems)检查?如果它被写成:
,那么该方法的工作方式是否相同?{
int j;
for(j=0; j <nElems; j++)
if( a[j].getLast().equals(searchName))
return a[j];
return null;
}
答案 0 :(得分:1)
是的,这两种方式都给出了相同的结果。
答案 1 :(得分:1)
它会:P你可以在for中声明j
以限制其范围。
在第一个实现中,它检查它是否迭代了所有元素并且没有找到任何内容,因为j
递增直到它等于for-loop
的停止条件。即,由于break
,它没有停止,表明它找到了一个元素。
我更喜欢你的解决方案,因为它更容易阅读:)
答案 2 :(得分:0)
嗯, j 永远不等于nElems,所以这个条件(j==nElems)
没有错,但它没有工作。
你可以像(j==nElems-1)
这样做,但这会浪费代码,所以你的算法比第一个好。