1.折半查找的思想就是:首先有一个从小到大排序的序列,把要查找的值与中间的值比较,如果比中间的值大,他就在中间值的右边,如果比中间值小,他就在中间值的左边。依次比较。

import java.util.Scanner;
public class FindTest {
    public static void main(String[] args) {
        // 请在 Begin-End 间编写代码
        /********** Begin **********/
        // 定义变量
        int n=0;
        int min=0;
        int mid;
        int count=0;
        // 接收给定数据
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();     // 数组长度
        int key = scanner.nextInt();     // 需要查找的元素
        // 定义数组
        int[] arr = new int[i];
        // 给数组赋值
        while (!scanner.hasNext("#")){
            int x = scanner.nextInt();//这里要通过给x赋值,然后再让x的值等于arr[n]的值
            arr[n]=x;
            n++;
        }
        // 查找给定元素索引,并输出查找次数
        int max=arr.length-1;
        mid=(max+min)/2;
        while(true) {
            count++;
            if(key<arr[mid]) {        // 如果目标元素小于中点元素
                max = mid-1;            // max向mid前移动
            }else if(key>arr[mid]) { // 如果目标元素大于中点元素
                min = mid+1;            // min向mid后移动
            }else {
                System.out.print("索引值:"+mid+"。查找次数:"+count+"。");            // 找到目标元素
                break;
            }
            if(max<min) {      // 没有找到的情况
                System.out.print("没有找到");
                break;
            }
            mid=(max+min)/2;     // 重新计算中间索引值
        }
        /********** End **********/
    }
    }