小知识点,初学者易懂,备注清晰,简单明了。 要求: 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;//始终返回的都是数组中间那个数的下标 } }