深入理解整数和浮点数二分查找算法

一、整数二分查找模板

整数二分查找是一种高效的查找算法,可以用于在有序整数数组中查找满足特定条件的元素。下面是整数二分查找的两个常用模板。

1. 查找大于等于目标值的第一个元素

private static int searchRight(int[] arr, int target) {
    int l = 0, r = arr.length - 1;
    while (l < r) {
        int mid = (l + r) / 2;
        if (arr[mid] >= target)
            r = mid;
        else
            l = mid + 1;
    }
    return l;
}

2. 查找小于等于目标值的最后一个元素

private static int searchLeft(int[] arr, int target) {
    int l = 0, r = arr.length - 1;
    while (l < r) {
        int mid = (l + r + 1) / 2; // 防止死循环
        if (arr[mid] > target)
            r = mid - 1;
        else
            l = mid;
    }
    return l;
}

二、浮点数二分查找模板

浮点数二分查找是一种用于在有序浮点数范围内查找满足特定条件的数值的算法。下面是浮点数二分查找的模板。

import java.util.Scanner;

public class Main {
    static Scanner sc = new Scanner(System.in);
    static double x;

    public static void main(String[] args) {
        x = sc.nextDouble();
        double l = 0, r = x;
        while ((r - l) > 1e-6) {
            double mid = (l + r) / 2;
            if (mid * mid >= x)
                r = mid;
            else
                l = mid;
        }
        System.out.println(l);
    }
}

三、总结

整数和浮点数二分查找是常用的查找算法,可以在有序数组或范围内高效地查找满足特定条件的元素或数值。通过掌握上述的二分查找模板,我们可以更加灵活地应用这些算法解决实际问题。

希望本篇博客能够帮助读者深入理解整数和浮点数二分查找算法,并在实际编程中得到应用。如果有任何问题或建议,请留言讨论。谢谢阅读!

你可能感兴趣的:(java,算法,算法,java,开发语言)