该文章有待更新
package cn.adminlog.search;

public class A01_BasicSearchDemo1 {
    public static void main(String[] args) {
        // 基本查找/顺序查找
        // 核心:  从0索引开始挨个往后查找

        // 需求:定义一个方法利用基本查找,查询某个元素是否存在
        // 数据如下:{131, 127, 147, 81, 103, 23, 7, 79}

        int[] arr = {131, 127, 147, 81, 103, 23, 7, 79};
        int number = 82;
        System.out.println(BasicSear(arr, number));

    }


    // 参数:数组、要查找的元素
    // 返回值:表示当权元素是否存在

    public static boolean BasicSear(int[] arr, int number) {
        // 利用基本查找来查找number在数组中是否存在
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == number) {
                return true;
            }
        }
        return false;
    }

}
  • 查找索引
package cn.adminlog.search;

import java.util.ArrayList;

public class A01_BasicSearchDemo2 {
    public static void main(String[] args) {
        // 课堂练习:
        // 需求: 定义一个方法利用基本查找,查询某个元素在数组中的索引

        int[] arr = {131, 127, 147, 81, 103, 23, 7, 79, 81};
        int number = 81;
        System.out.println(BasicSear(arr, number));
        ArrayList basicSearList = BasicSearList(arr, number);
        System.out.println(basicSearList);
        for (int i = 0; i < basicSearList.size(); i++) {
            System.out.println(basicSearList.get(i));
        }


    }

    public static int BasicSear(int[] arr, int number) {
        // 利用基本查找来查找number在数组中是否存在
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == number) {
                return i;
            }
        }
        return -1;
    }

    public static ArrayList BasicSearList(int[] arr, int number) {
        // 利用基本查找来查找number在数组中是否存在
        ArrayList list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == number) {
                list.add(i);
            }
        }
        return list;
    }
}
package cn.adminlog.search;

public class A02_BinarySearchDemo1 {
    public static void main(String[] args) {
        // 二分查找/折半查找
        // 核心:  每次排除一般的查找范围

        // 需求:定义一个方法利用二分查找,查询某个元素在数组中的索引
        // 数据如下:{7, 23, 79, 81, 103, 127, 131, 147}
        int[] arr = {7, 23, 79, 81, 103, 127, 131, 147};
        System.out.println(binarySear(arr, 7));

    }

    public static int binarySear(int[] arr, int number) {
        // 1. 定义两个变量,记录要查找的范围
        int min = 0;
        int max = arr.length - 1;
        // 2. 利用循环会不断的去找要查找的数据
        while (true) {
            if (min > max) {
                return -1;
            }

            // 3. 找到min和max的中间位置
            int mid = (min + max) / 2;

            // 4. 拿着mid指向的元素跟要朝朝的元素进行比较
            if (arr[mid] > number) {
                // 4.1 number在mid的左边
                // min不变,max = mid - 1;
                max = mid - 1;
            } else if (arr[mid] < number) {
                // 4.2 number在mid的右边
                min = min + 1;
            }else{
                // 4.3 number跟mid指向的元素一样
                return mid;
            }
        }
    }
}