【我的Java笔记】二分查找法

来源:互联网 发布:如何清空数据库 编辑:程序博客网 时间:2024/06/06 03:57

1.前提:需针对一个有序数组来进行查找


2.解决思路:

  1)定义最小索引和最大索引
 
2)计算出中间索引
 
3)拿中间索引对应的元素和要查找的元素进行比较
  ①如果相等:直接返回中间索引
  ②若不相等:
  大了,左边找
  小了,右边找
  (4)重新获取最小索引和最大索引,计算出中间索引
  (5)回到步骤 (3) 继续查找


3.图解:



例:

public class ArrayDemo {public static void main(String[] args) {int [] arr = {9,13,14,45,96,99};int index = getIndex(arr,96);System.out.println("Index:"+index);}public static int getIndex(int[] arr,int value){//定义最大索引和最小索引int max = arr.length -1 ;int min = 0 ;//计算中间索引int mid = (max + min)/2 ;//拿中间索引对应的元素和要查找的value元素进行比较while(arr[mid] !=value){//当前mid索引对应的元素不等于value元素,分两种情况if(arr[mid]>value){//重新获取最大索引 max = mid -1 ;}else if(arr[mid]<value){min = mid +1 ;}//判断:如果找不到了应该返回-1if(min>max){return -1 ;}//重新获取最大和最小索引,计算中间索引mid = (max+min)/2 ;}return mid ; //如果直接相等,直接返回}}




原创粉丝点击