java认证考试编程题(19)
来源 :中华考试网 2016-10-06
中写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1
/**
* 二分查找特定整数在整型数组中的位置(递归)
* @param dataset
* @param data
* @param beginIndex
* @param endIndex
* @return index
*/
public int binarySearch(int[] dataset,int data,int beginIndex,int endIndex)
{
int midIndex = (beginIndex+endIndex)/2;
if(data<dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;
if(data<dataset[midIndex])
{
return binarySearch(dataset,data,beginIndex,midIndex-1);
}else if(data>dataset[midIndex])
{
return binarySearch(dataset,data,midIndex+1,endIndex);
}else
{
return midIndex;
}
}
/**
* 二分查找特定整数在整型数组中的位置(非递归)
* @param dataset
* @param data
* @return index
*/
public int binarySearch(int[] dataset ,int data)
{
int beginIndex = 0;
int endIndex = dataset.length - 1;
int midIndex = -1;
if(data<dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;
while(beginIndex <= endIndex) {
midIndex = (beginIndex+endIndex)/2;
if(data<dataset[midIndex]) {
endIndex = midIndex-1;
} else if(data>dataset[midIndex]) {
beginIndex = midIndex+1;
}else
{
return midIndex;
}
}
return -1;
}