目录
1.二分查找的优势:
对比顺序查找,可以提高查找效率
2.二分查找的前提条件:
数据必须是有序的
如果数据是乱的,先排序再用二分查找得到的索引没有实际意义,只能确定当前数字在数组中是否存在,因为排序之后数字的位置就可能发生变化了
3.二分查找的过程:
min和max表示当前要查找的范围mid是在min和max中间的
如果要查找的元素在mid的左边,缩小范围时,min不变,max等于mid减1如果要查找的元素在mid的右边,缩小范围时,max不变,min等于mid加 1
package sort_learning;
public class sort_fast {
public static void main(String[] args) {
//调用二分查找
int []arr={1,2,3,4,5};
find(arr,5);
}
public static void find(int []arr,int input){
int min=0;
int max=arr.length-1;
while (true){
if(min>max){
System.out.println("找不到");
return ;
}
int mid=(min+max)/2;
if(arr[mid]<input){
min=mid+1;
} else if (arr[mid]>input) {
max=mid-1;
}else {System.out.println(mid);return;}
}
}
}
结果:返回索引(排序好的索引);