阵列搜索代码
问题描述:
在这本书中“数据结构和算法在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
}
我试图理解为什么需要有一个,如果(j == nElems )检查?如果它写成:
{
int j;
for(j=0; j <nElems; j++)
if(a[j].getLast().equals(searchName))
return a[j];
return null;
}
答
它会:P你可以声明j
里面的for来限制它的范围。
在第一个实现中,它所做的是检查它是否迭代了所有元素,但没有找到任何内容,因为j
已递增,直到等于for-loop
的停止条件。即,它并没有因为break
而停止,表明它找到了一个元素。
我喜欢你的解决方案,因为它更容易阅读:)
答
是的,这两种方法都给出了相同的结果。
答
好,Ĵ永远等于nElems所以这个条件(j==nElems)
是没有错的,但它不是工作。 你可以使它像这样(j==nElems-1)
但它是偷代码的浪费,所以你的算法比第一个好。
如果格式正确,您可以更好地理解代码。 – 2013-02-19 12:06:00