(JAVA)二分法
程序员文章站
2024-03-16 08:39:04
...
package com.book.lite;
/**
* @author zhangyu
* @date 2021年08月12日 11:15 下午
* 使用二分法,查找有序数组的某一个值
*/
public class binarySeach {
public static void main(String[] args){
int[] arr = {2,4,5,9,45,65,74,83,100};
int index = arrNumber(arr,0);
System.out.println(index);
}
/*
*
* @author zhangyu
* @date 2021/8/12 11:35 下午
* @param arr
* @param index
* @return int
* 定义最小下标指针
* 定义最大下标指针
* 定义中间数的指针
* 当查找值大于中间值时,最小下标指针移到中间位置
* 当查找值小于中间值时,最大下标指针移到中间位置
*/
public static int arrNumber(int[] arr,int index){
int min = 0;
int max = arr.length-1;
int mid = 0;
while (min < max){
mid = (min+max)/2;
if (index <arr[mid]){
max = mid;
}
else if (index > arr[mid]){
min = mid;
}
else{
return mid;
}
}
return -1;
}
}