2016-03-23 130 views
1

理想情況下,我希望計數器一旦找到值就停止。當我運行程序時,它會繼續比較矩陣中的其他值。二維陣列排序列表的線性搜索

public static void LinearSearch1(int[][] matrix, int array_size, int target) { 
     int row, col; 
     int comparison_counter = 0; 
     boolean found = false; 

     while (!found) 
     { 
      for (row = 0; row < array_size; row++) 
      { 

       for (col = 0; col < array_size; col++) 
       { 
        comparison_counter++; 
        if (matrix[row][col] == target) 
        { 
         found = true; 

        }//end if 


       }//end inner for  
      }//end outer for 
     } //end while 

     System.out.println(target + " found in " + comparison_counter + " number of comparisons using linear search"); 
    } 

回答

0

您可以在found = true之後使用break;,但它將退出所有循環。如果您只想退出for循環,則必須將&& !found添加到for循環測試中。

順便說一句,你爲什麼有while(!found)

+0

這是一個錯字,謝謝! –

0
if (matrix[row][col] == target) 
{ 
    found = true; 
    break; //Add this line 
} 
+2

儘管此代碼可能會回答問題,但提供有關爲何和/或代碼如何回答此問題的其他上下文會提高其長期價值。 – ryanyuyu

0

如果你布爾變量發現設置爲false你在while循環永遠不會到來

它應該是:

while (!found) 

,一旦found = true然後添加一個break;