适用于查找有顺序的数组,通过每次区间减半,增加效率
package com.example.demo.SortAlgorithm;
/*
*
* @Author: i_heh
* @Date: 2019/7/4
* @Time: 18:15
* @Description: 二分查找
*
*/
public class BinarySearch {
public static int binary(int key){
//从升序排序的数组中查找KEY所在索引
int[] arr = new int[]{0,1,4,6,7,8,9,10};
//初始化查找的起点和终点
int end=arr.length-1;
int start=0;
while (start<=end){
//每次都从中间开始找
int mid=(end+start)/2;
System.out.println("mid == " + mid);
if (arr[mid]==key){
return mid;
}else if (arr[mid]>key){
//中间数大于key,就找比中间数小的
end = mid;
}else {
start = mid;
}
}
return -1;//表示未找到
}
public static void main(String[] args) {
int i = binary(4);
System.out.println(i);
}
}
网友评论