2011-12-01 96 views
0

我有這個,但該方法沒有顯示在bluej中創建的對象。 如何對int數組執行二分搜索然後輸出找到的int?如何在java中使用bluej實現二進制搜索?

public static int binarySearch(int a[], int element) 
{ 
    int first = 0; 
    int upto = a.length; 

    while (first < upto) 
    { 
     int mid = (first + upto)/2; // Compute mid point. 
     if (element < a[mid]) 
     { 
      upto = mid;    // repeat search in bottom half. 
     } else if (element > a[mid]) 
      { 
       first = mid + 1;  // Repeat search in top half. 
      } 
       else 
       { 
        return mid;  // Found it. return position 
       } 
      } 
    return -(first + 1);    // Failed to find key 
    } 

回答

3

你所做的方法靜態。因此它很可能出現在而不是對象的上下文菜單中。

0

如果您總是找到您要找的int,那麼您每次只會返回element。搜索沒有意義。此方法返回元素的索引或其插入位置的負數。

順便說一句:該代碼實例具有在

int mid = (first + upto)/2 

舊錯誤,這應該讀

int mid = (first + upto) >>> 1; 

,因爲它在Arrays.binarySearch();

+1

說明的作用:如果(第一+高達)溢出的最大整數併成爲負數。 –