2013-02-19 102 views
1

在这本书中“数据结构和算法在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; 
} 
+0

如果格式正确,您可以更好地理解代码。 – 2013-02-19 12:06:00

回答

1

它会:P你可以声明j里面的for来限制它的范围。

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

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

1

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

0

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