JAVA实现二分查找插入位置

package org.example;

/**
 * 二分查找插入位置的实现
 */
public class TwoSplitSearch {
    public static void main(String[] args) {
        int[] nums = new int[]{1, 3, 4, 5, 7, 9};
        // 输出插入位置
        System.out.println(searchInsert(nums, 6));

    }

    public static int searchInsert(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        return twoSplitSearch(nums, left, right, target);
    }

    public static int twoSplitSearch(int[] nums, int left, int right, int target) {
        // 区间无效时,left 就是插入位置
        if (left > right) {
            return left;
        }

        int mid = left + ((right - left) / 2);
        if (nums[mid] == target) {
            return mid;
        } else if (nums[mid] > target) {
            // 查找左半边,排除 mid
            return twoSplitSearch(nums, left, mid - 1, target);
        } else {
            // 查找右半边,排除 mid
            return twoSplitSearch(nums, mid + 1, right, target);
        }
    }
}

 

posted @ 2026-07-27 23:28  追极  阅读(5)  评论(0)    收藏  举报