package test;
import java.util.Arrays;
import java.util.Scanner;
/**
-
二分查找
-
通过用户输入的数组以及用户需要查询的数组值判断索引位置
-
*/
public class BinarySerach {public static int binarySearch(int arr[] ,int key) {
int start=0; int end=arr.length-1; while(start<=end) { //此行代码等价于 int mid=(start+end)/2 int mid=(start+end)>>>1; if(arr[mid]==key) { return mid; }else if(arr[mid]<key) { start=mid+1; }else { end=mid-1; } } return -1;}
public static int [] sort(int [] arr) {Arrays.sort(arr); return arr;}
public static void main(String[] args) {Scanner sc=new Scanner(System.in); System.out.println("请输入数组大小:"); int size=sc.nextInt(); int arr[]= new int[size]; System.out.println("请输入数组元素:"); for(int i=0;i<arr.length;i++) { int aa=sc.nextInt(); arr[i]=aa; } //由于二分查找需要有序数组 所以先对数组进行排序 int []arr1=sort(arr); for(int x:arr1) { System.out.print(x+" "); } System.out.println();//控制格式 System.out.println("请输入一个数组中的元素:"); int key=sc.nextInt(); int c= binarySearch(arr1,key); if(c!=-1) { System.out.println("元素值所在数组的索引位置为:"+c); }else { System.out.println("需要查询的元素不存在!"); }}
}


本文介绍了一种基于用户输入的二分查找算法实现方法,该算法首先对输入数组进行排序,然后通过二分查找确定目标元素的位置。文章详细解释了算法步骤,并提供了完整的Java代码示例。
742

被折叠的 条评论
为什么被折叠?



