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相联系