Binary Search 二分查找/折半查找
intkeyIndex = startIndex + (length -
endIndex) /2;//(startIndex +
endIndex) / 2
if(arr[keyIndex]==
findNum)
//
递归思想都要有个结局,期待的
。
前提:元素从小到大有序排列在数组中。
核心思想:将元素与数组中间的元素对比,相等则结束,如小,则在数组较小的部分进行二分查找,如大,则在数组中较大的部分进行二分查找。
int index = binarySearch(arr, 0, arr.length);
public int binarySearch(arr[], int findNum, int startIndex,int endIndex)
{
if(startIndex == endIndex)
{
return -1;
}
//递归思想都要有个结局,非期待的,但必须有。
{
return keyIndex;
}
else if(arr[keyIndex]>
findNum)
{
returnbinarySearch(arr[],
findNum,
startIndex,keyIndex);
}
else//if(arr[keyIndex]<
findNum)
{
return binarySearch(arr[],
findNum,
keyIndex
+ 1, endIndex);
}
}
//
returnbinsearch(0, len(arr)),与上面+1相联系