Java循环数组

时间:2013-11-17 11:25:05

标签: java arrays binary-search linear-search

如何遍历数组,直到达到阵列的最后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个元素。 我的问题是如何构建这样的循环以及如何跳转到执行线性搜索的方法。

1 个答案:

答案 0 :(得分:0)

在计算mid之前,请执行类似

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

然后您的linearSearch只需要从lowhigh的迭代器找到x,否则返回NOT_FOUND