欢迎访问宙启技术站
智能推送

Java中实现数组查找的函数应该怎么写?

发布时间:2023-10-05 04:11:53

在Java中,实现数组查找的函数可以有多种实现方式,下面是一个示例代码:

import java.util.ArrayList;
import java.util.List;

public class ArraySearch {
    public static void main(String[] args) {
        int[] array = {2, 4, 6, 8, 10};

        // 查找元素8在数组中的位置
        int index = linearSearch(array, 8);
        System.out.println("元素8的位置是:" + index);

        // 查找元素10在数组中的位置(使用二分查找)
        index = binarySearch(array, 10);
        System.out.println("元素10的位置是:" + index);

        // 查找元素5在数组中的所有位置
        List<Integer> positions = findAllPositions(array, 5);
        System.out.println("元素5的所有位置是:" + positions);
    }

    /**
     * 线性查找指定元素在数组中的      个位置
     * @param array 数组
     * @param target 目标元素
     * @return 目标元素在数组中的位置,如果找不到则返回-1
     */
    public static int linearSearch(int[] array, int target) {
        for (int i = 0; i < array.length; i++) {
            if (array[i] == target) {
                return i;
            }
        }
        return -1;
    }

    /**
     * 二分查找指定元素在有序数组中的位置
     * @param array 数组(要求有序)
     * @param target 目标元素
     * @return 目标元素在数组中的位置,如果找不到则返回-1
     */
    public static int binarySearch(int[] array, int target) {
        int left = 0;
        int right = array.length - 1;

        while (left <= right) {
            int mid = left + (right - left) / 2;

            if (array[mid] == target) {
                return mid;
            }
            else if (array[mid] < target) {
                left = mid + 1;
            }
            else {
                right = mid - 1;
            }
        }
        return -1;
    }

    /**
     * 查找指定元素在数组中的所有位置
     * @param array 数组
     * @param target 目标元素
     * @return 目标元素在数组中的所有位置,如果找不到则返回空列表
     */
    public static List<Integer> findAllPositions(int[] array, int target) {
        List<Integer> positions = new ArrayList<>();

        for (int i = 0; i < array.length; i++) {
            if (array[i] == target) {
                positions.add(i);
            }
        }
        return positions;
    }
}

该示例代码中定义了三个函数来实现不同的数组查找功能:

- linearSearch函数使用线性搜索算法,遍历整个数组,找到元素与目标元素相等的位置。

- binarySearch函数使用二分查找算法,要求输入的数组是有序的,根据目标元素和中间元素的比较结果,将查找范围缩小一半,直到找到目标元素或者查找范围为空。

- findAllPositions函数找到数组中所有与目标元素相等的位置,并将这些位置保存在一个列表中。

这些函数都可以根据需要进行扩展和修改,以适应具体的应用场景。