小知识点,初学者易懂,备注清晰,简单明了。
要求:
1. 在有序的情况下,升序和降序。
2.求某个元素在数组中的位置,如果不存在返回-1。
//包名
package test1111;
public class Demo2 {
public static void main(String[] args) {
//首先是一个排好序的数组(升序或降序)
int[] arr = {11,23,40,45,59,65,99};
//查找 数字45
int index = getIndex(arr, 65);
//获得查到的数字下标值
System.out.println("index="+index);//index=5
}
public static int getIndex(int[] arr,int key){
int minIndex = 0;//最小下标
int maxIndex = arr.length-1;//最大下标
int midIndex = (maxIndex + minIndex)/2;//中间下标
while(key != arr[midIndex]){
//当中间值和key不等的时候进入循环重新获得一组数字
if(key > arr[midIndex]){
//key大于中间值,获得新值最小下标等于中间下标+1
minIndex = midIndex + 1;
}else{
//key小于中间值,获得最大下标等于中间下标-1
maxIndex = midIndex - 1;
}
if(maxIndex < minIndex){
//最大下标小于最小下标 证明值不存在
return -1;//若果不存在返回-1
}
//新的一组数字的中间下标
midIndex = (maxIndex + minIndex)/2;
}
return midIndex;//始终返回的都是数组中间那个数的下标
}
}