0

你如何遍历一个数组,直到你到达数组的最后 50 个元素呢?说我有这个二进制搜索代码:

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 个元素结束搜索。我的问题是如何构建这样的循环以及如何跳转到进行线性搜索的方法。

4

1 回答 1

0

在计算之前mid,请执行以下操作

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

然后你linearSearch只需要从 to 迭代lowhighfind x,否则 return NOT_FOUND

于 2013-11-17T11:32:09.677 回答