二分查找(JAVA)
二分查找运行时间:log₂n(n是查找列表中元素个数)
例如:列表中包含8个元素,则表示log₂8
结果:log₂8=3(₂3=8)
/**
*
* @param arr 有序数组
* @param x 查找的值
* @return 返回查找的值在数组中的索引,有则返回,无则返回-1
*
*/
public static int getIndex(int[] arr,int x){
//获取数组边界值
int min=0;//左
int max=arr.length-1;//右
//循环语句,
while(min<=max) {
//获取数组二分索引值
int mid=(min+max)/2;
//通过二分索引值获取去数组中的值,判断是否与查询值相等,相等则直接返回二分索引值
if(arr[mid] == x) {
return mid;
//通过二分索引值获取去数组中的值,判断是否大于查询的值,大于的话,右边边界值,中间值减1
}else if(arr[mid]>x) {
max=mid-1;
}else{
//通过二分索引值获取去数组中的值,该值既不大于也不等于查询的值,只有小于的这种可能话,左边边界值,中间值加1
min=mid+1;
}
}
//查询的值不在数组中,返回-1
return -1;
}