基础算法--二分查找插入位置

给定一个有序数组如 [0,1,2,3,4] (从小达大排序)和一个正整数 num,查找二分插入位置,使得,插入num后的数组依然有序

代码如下:

Java 版本

public int getInsertIndex(int[] nums, int num) {
    if (nums == null || nums.length == 0) return 0;

    int i = 0;
    int j = nums.length - 1;
    while (i <= j) {
        int mid = (i + j) / 2;
        if (nums[mid] < num) {
            i = mid + 1;
        } else if (nums[mid] > num) {
            j = mid - 1;
        } else {
            return mid;
        }
    }
    // 如果是升序则返回i,如果是降序返回j
    return i;
}

Python 版本:

def get_insert_index(nums: list[int], num: int) -> int:
    if len(nums) == 0:
        return 0
    
    i, j = 0, len(nums) - 1
    while i <= j:
        mid = (i + j) // 2
        if nums[mid] == num:
            return mid
        elif nums[mid] > num:
            j = mid - 1
        else:
            i = mid + 1
    # 升序返回 i,倒序返回 j
    return i

 

posted @ 2024-12-18 21:55  lenbkan  阅读(2)  评论(0编辑  收藏  举报