(1)二分查找算法可用于解决顺序存储且元素有序的查找问题,根据要求的不同可返回boolean true值或返回查找到的位置下标。如在数组
int [] array = {1,3,4,6,9,23};
中查找6,返回3;查找7,则返回-1(代表未找到)。
(2)不能解决确定元素第一次出现位置的问题,如在数组
int [] array = {1,3,4,6,6,6,6,9,23};
确定6第一次出现的位置则返回4(正确答案应该是3)。
(3)根据循环结束条件的不同,二分查找算法有不同的形式:
形式一:
public static int binarySearch(int [] arr, int target){
int i = 0;
int j = arr.length-1;
int mid = 0;
while(i != j){
mid = (i + j)/2;
if(arr[mid] == target)
return mid;
if(arr[mid] > target)
j = mid - 1;
if(arr[mid] < target)
i = mid + 1;
}
if(arr[mid] == target)
return mid;
else
return -1;
}
形式二:
public static int binarySearch(int [] arr, int target){
int i = 0;
int j = arr.length-1;
int mid = 0;
while( i <= j){
mid = (i + j)/2;
if(arr[mid] == target)
return mid;
if(arr[mid] > target)
j = mid - 1;
if(arr[mid] < target)
i = mid + 1;
}
return -1;
}