2013-11-17 1 views
0

Как вы прокручиваете массив до тех пор, пока не достигнете последних 50 элементов вашего массива? сказать, у меня есть этот двоичный код поиска:Java loop through array

public class Binary 
{ 
public static final int NOT_FOUND = -1; 


public static <AnyType extends Comparable<? super AnyType>> 
       int binarySearch(AnyType [ ] a, AnyType x) 
{ 
    int low = 0; 
    int high = a.length - 1; 
    int mid; 

    while(low <= high) 
    { 
     mid = (low + high)/2; 

     if(a[ mid ].compareTo(x) < 0) 
      low = mid + 1; 
     else if(a[ mid ].compareTo(x) > 0) 
      high = mid - 1; 
     else 
      return mid; 
    } 

    return NOT_FOUND;  // NOT_FOUND = -1 
} 

// Test program 
public static void main(String [ ] args) 
{ 
    int SIZE = 8; 
    Integer [ ] a = new Integer [ SIZE ]; 
    for(int i = 0; i < SIZE; i++) 
     a[ i ] = i * 2; 

    for(int i = 0; i < SIZE * 2; i++) 
     System.out.println("Found " + i + " at " + 
          binarySearch(a, i)); 

    } 
} 

Я хотел бы найти данный массив, пока не достигнет до последних 50 элементов этого массива, то поиск завершается последовательным взгляд из 50 элементов. Вопрос в том, как я могу построить такой цикл и как перейти к методу линейного поиска.

ответ

0

Перед тем, как рассчитать mid, сделать что-то вроде

if(high - low + 1 <= 50) return linearSearch(low, high, a, x); 

Тогда ваш linearSearch просто должен итератора из low в high найти x, либо вернуть NOT_FOUND.

 Смежные вопросы

  • Нет связанных вопросов^_^