如何遍历数组,直到达到阵列的最后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个元素。 我的问题是如何构建这样的循环以及如何跳转到执行线性搜索的方法。
答案 0 :(得分:0)
在计算mid
之前,请执行类似
if(high - low + 1 <= 50) return linearSearch(low, high, a, x);
然后您的linearSearch
只需要从low
到high
的迭代器找到x
,否则返回NOT_FOUND
。