
二分查找
yishan_hit
爬虫、java后端
展开
-
二分查找算法解决搜索插入位置问题
问题描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。假设数组中无重复元素。public int searchInsert(int[] nums, int target) { int left = 0; int right = nums.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (nums[mi原创 2021-04-25 17:05:58 · 388 阅读 · 0 评论 -
二分查找算法归纳
二分查找算法思路如下:确定要查找的数组nums的左下标left,右下标right。根据left,right计算出中间下标mid。比较nums[mid]和target值,再根据比较的情况,重新确定要查找的数组的边界。即重复上述步骤。直到找到想要找的数,或者没找到(循环退出)。JAVA代码如下:public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; while (原创 2021-04-24 16:36:08 · 99 阅读 · 0 评论 -
二分查找整形溢出问题
left + high > Integer.MAX_VALUE当上述情况发生时,称为整形溢出。JAVA中的int型是32位二进制数,首位0和1分别表示数字的正和负,所以最大的能表示的数为2^31 - 1。若要表示的数大于等于2^31,则会仍进位,也就是首位为1,但计算机会认为这个数是负数。所以为了保证在二分查找的代码中不发生此类问题,将求中间下表mid的代码写成如下:mid = left + (right - left) / 2...原创 2021-04-24 16:05:10 · 423 阅读 · 0 评论