二分搜索详解

mac2024-01-23  37

/* * 题目要求:用户输入一个需要查找的数字,在数组中 * 找到这个数字并返回其在数组中的角标。(要求使用二分查找法) */ import java.util.Scanner; public class binaryfind { public static void main(String[] args) { Scanner sc=new Scanner (System.in); System.out.print("Please input that you need explore number in this array: "); int key=sc.nextInt(); int[] arr1={1,2,6,9,20,27,32,48,66,88}; int index=binaryexplore(arr1,key); if(index==-1) { System.out.println("The number is not in this array!"); }else { System.out.println("It is located in subscript equals "+index+",that you need search for the number in this array!"); } } public static int binaryexplore(int[] arr, int key) { int max=arr.length-1; int x; int min=0; while(true) {//这个while循环是二分搜索的核心代码 int mid=(max+min)/2; if(min>max) {//min>max说明这个查找的数不在这个数组里面 return -1; } if (key>arr[mid]) { min=mid+1; }else if(key<arr[mid]) { max=mid-1; }else { x=mid; break; } } return x; } }

 

二分搜索复杂度分析:

最新回复(0)