找出下面这段二分查找代码中错误:public int searchint nums int target int left = 0 right = numslength - 1; whileleft = right int mid = left + right 2; ifnumsmid target
该二分查找代码中的错误是将大于目标值的元素移动到左边,小于目标值的元素移动到右边,应该将大于目标值的元素移动到右边,小于目标值的元素移动到左边。具体来说,应该将代码中的左右移动代码修改为以下形式:
if(nums[mid] > target) { right = mid - 1; } else if(nums[mid] < target) { left = mid + 1; } else { return mid; }
原文地址: http://www.cveoy.top/t/topic/bLw5 著作权归作者所有。请勿转载和采集!