基于:二分查找(折半查找),前提是数组中的数据是有序的
思想:搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,
则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,
则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半
public class ef { public static int Index(int[]arr , int num) { if (arr==null||arr.length==0) return -1; int l=0; int r=arr.length-1; int ans=-1; while (l<=r) { int mid=(l+r)/2; if(arr[mid]>=num) { ans=mid; r=mid-1; } else l=mid+1; } return ans; } public static void main(String[] args) { Scanner sc=new Scanner(System.in); int num=sc.nextInt(); int arr[]={1,2,2,2,3,4,4,4,5,5}; System.out.println(Index(arr,num));