基础算法--二分查找插入位置
给定一个有序数组如 [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