要实现二分法,需要定义一个函数,函数需要传入三个参数:要查找的数组、要查找的数和数组范围的起点和终点。
下面是标准的Java实现二分法的完整代码示例:
public static int binarySearch(int[] nums, int target, int left, int right) {
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;
}
现在,让我们通过两个示例来说明如何实用这段代码:
示例一:查找有序数组中是否包含数值10
int[] nums = new int[] {1, 3, 5, 7, 9, 11, 13};
int target = 10;
int index = binarySearch(nums, target, 0, nums.length - 1);
if (index != -1) {
System.out.println("数组包含数值 " + target + ",其下标为 " + index);
} else {
System.out.println("数组不包含数值 " + target);
}
示例二:查找有序数组中是否包含多个数值
int[] nums = new int[] {1, 3, 5, 7, 9, 11, 13, 15, 17};
int[] targets = new int[] {1, 13, 15};
for (int target : targets) {
int index = binarySearch(nums, target, 0, nums.length - 1);
if (index != -1) {
System.out.println("数组包含数值 " + target + ",其下标为 " + index);
} else {
System.out.println("数组不包含数值 " + target);
}
}
通过以上两个示例,可以清楚地了解如何使用Java实现二分法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现二分法的完整代码 - Python技术站