数组搜索代码

时间:2013-02-19 11:56:51

标签: java arrays search

在“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;
}

3 个答案:

答案 0 :(得分:1)

是的,这两种方式都给出了相同的结果。

答案 1 :(得分:1)

它会:P你可以在for中声明j以限制其范围。

在第一个实现中,它检查它是否迭代了所有元素并且没有找到任何内容,因为j递增直到它等于for-loop的停止条件。即,由于break,它没有停止,表明它找到了一个元素。

我更喜欢你的解决方案,因为它更容易阅读:)

答案 2 :(得分:0)

嗯, j 永远不等于nElems,所以这个条件(j==nElems)没有错,但它没有工作。 你可以像(j==nElems-1)这样做,但这会浪费代码,所以你的算法比第一个好。