重写一下这段的二分查找算法:public int searchint nums int target int l = 0 r = numslength - 1; whilel = r int mid = l + r 2; ifnumsmid target l = mid + 1;
以下是重写后的二分查找算法:
public int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (nums[mid] == target) { return mid; } else if (nums[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; }
主要的修改包括:
-
用 left 和 right 代替 l 和 r,使代码更加易读。
-
使用 left + (right - left) / 2 计算 mid 值,避免了 l + r 可能溢出的问题。
-
将相等的情况放在最前面判断,以便提前返回结果,提高效率。
-
将所有的 if-else 语句都使用花括号括起来,使代码更加规范。
原文地址: http://www.cveoy.top/t/topic/bLxe 著作权归作者所有。请勿转载和采集!