📜  按升序排序的数组的二进制搜索 - Java (1)

📅  最后修改于: 2023-12-03 15:39:48.363000             🧑  作者: Mango

按升序排序的数组的二进制搜索 - Java

在Java中,二进制搜索是一种高效的搜索算法,可用于查找按升序排序的数组中的元素。以下是一个示例程序,展示如何在Java中实现二进制搜索:

public class BinarySearch {

    public static int binarysearch(int[] arr, int key) {

        int low = 0;
        int high = arr.length - 1;

        while (low <= high) {

            int mid = (low + high) / 2;

            if (arr[mid] < key) {
                low = mid + 1;
            } else if (arr[mid] > key) {
                high = mid - 1;
            } else {
                return mid;
            }
        }

        return -1;
    }

    public static void main(String[] args) {

        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};

        int key = 5;

        int index = binarysearch(arr, key);

        System.out.println("Index of " + key + " is " + index);
    }
}
解释

该算法使用“分而治之”策略。它将数组中间的元素与搜索键进行比较。如果中间元素小于搜索键,则在中间元素的右侧继续搜索,反之,则在中间元素的左侧继续搜索。如果中间元素等于搜索键,则返回中间元素的索引。如果搜索键未在数组中找到,则返回-1。

结论

在Java中实现二进制搜索是一种高效的搜索数组的方法。它可以快速找到数组中一个特定的元素,而不必遍历整个数组。BinarySearch类可以作为通用类的一部分,并在许多方面使用。