线性查找法

最简单的查找算法 一个个进行比较 直到找到第一个相同的值或对比完所有的值后停止

import java.util.Scanner;
public class code
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in); 
        int[] arr = {0,1,2,3,4,5,6,7,8,12};
        int key = -1;// 数组下标
        int search = input.nextInt();// 输入一个值 进行查找
        for (int i = 0; i <arr.length;i++) 
        {
            if(arr[i] == search) // 如果值相等 直接跳出循环 返回下标
            {
                key = i;
                break;
            }
        }
        if(key == -1)
        {
            System.out.println("没有找到");
        }
        else
        {
            System.out.println("下标为:" + key);
        }
    }
}

二分查找法

每次比较会减少筛掉数组一半的元素 效率高 但是只适用于已经进行过排序的数组

import java.util.Scanner;
public class code
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in); 
        int[] arr = {0,1,2,3,4,5,6,7,8,12};
        int start = 0;
        int end = arr.length - 1;
        int middle;// 数组中间值
        int key = -1;// 数组下标
        int search = input.nextInt();// 输入一个值 进行查找
        while(start <= end)
        {
            middle = (start+end) / 2;// 每次循环获得中间值
            if(arr[middle] == search)// 如果结果相等 直接跳出循环返回下标
            {
                key = middle;
                break;
            }
            if(arr[middle] < search)// 如果查找值大于数组值 对起始值进行赋值
            {
                start = middle + 1;
            }
            if(arr[middle] > search)// 如果查找值小于数组值 对结束值进行赋值
            {
                end = middle - 1;
            }
        }
        if(key == -1)
        {
            System.out.println("没有找到");
        }
        else
        {
            System.out.println("下标为:" + key);
        }
    }
}