欢迎访问宙启技术站

Java函数实现查找指定元素在数组中的位置

发布时间:2023-06-29 20:49:24

要实现在数组中查找指定元素的位置,可以使用两种方法:线性查找和二分查找。

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; // 如果找不到目标元素,返回-1
}

2. 二分查找方法:首先将数组按升序排序,然后从数组的中间元素开始比较,根据比较结果确定要继续查找的范围,重复这个过程直到找到目标元素或者确定目标元素不在数组中。

public static int binarySearch(int[] array, int target) {
    int low = 0;
    int high = array.length - 1;
    while (low <= high) {
        int mid = (low + high) / 2;
        if (array[mid] == target) {
            return mid;
        } else if (array[mid] < target) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    return -1; // 如果找不到目标元素,返回-1
}

下面是一个完整的示例代码:

public class ArraySearch {
    public static void main(String[] args) {
        int[] array = {1, 3, 5, 7, 9}; // 数组按升序排列
        int target = 5;
        int position = linearSearch(array, target);
        if (position != -1) {
            System.out.println("目标元素 " + target + " 的位置是 " + position);
        } else {
            System.out.println("目标元素 " + target + " 不在数组中");
        }
        
        position = binarySearch(array, target);
        if (position != -1) {
            System.out.println("目标元素 " + target + " 的位置是 " + position);
        } else {
            System.out.println("目标元素 " + target + " 不在数组中");
        }
    }
    
    public static int linearSearch(int[] array, int target) {
        for (int i = 0; i < array.length; i++) {
            if (array[i] == target) {
                return i;
            }
        }
        return -1;
    }
    
    public static int binarySearch(int[] array, int target) {
        int low = 0;
        int high = array.length - 1;
        while (low <= high) {
            int mid = (low + high) / 2;
            if (array[mid] == target) {
                return mid;
            } else if (array[mid] < target) {
                low = mid + 1;
            } else {
                high = mid - 1;
            }
        }
        return -1;
    }
}

以上代码中,先使用线性查找方法寻找目标元素的位置,然后使用二分查找方法寻找目标元素的位置。如果找不到目标元素,返回-1。最终输出目标元素的位置或者提示目标元素不在数组中。

总结:通过线性查找和二分查找两种方法,我们可以在一个数组中查找指定元素的位置。线性查找的时间复杂度是O(n),其中n是数组的长度;而二分查找的时间复杂度是O(log n)。因此,当数组规模较大时,使用二分查找效率更高。