Java中Binary Search怎样实现
在Java中,可使用递归或迭代的方式实现二分搜索算法。以下是一个使用迭代方式实现的示例代码:
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return ⑴; // 如果找不到目标元素,则返回⑴
}
在这段代码中,arr
是一个已排序的数组,target
是要查找的目标元素。在每次迭代中,我们计算中间元素的索引mid
,然后根据arr[mid]
与target
的大小关系来更新left
和right
的值,直到找到目标元素还是left > right
为止。如果找到目标元素,则返回它的索引,否则返回⑴表示未找到。
另外,也能够使用递归的方式实现二分搜索算法,递归的实现方式以下:
public static int binarySearchRecursive(int[] arr, int target) {
return binarySearchRecursive(arr, target, 0, arr.length - 1);
}
private static int binarySearchRecursive(int[] arr, int target, int left, int right) {
if (left > right) {
return ⑴;
}
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
return binarySearchRecursive(arr, target, mid + 1, right);
} else {
return binarySearchRecursive(arr, target, left, mid - 1);
}
}
在这段代码中,binarySearchRecursive
方法是一个重载方法,它接受一个数组arr
和目标元素target
作为参数,并调用了另外一个私有方法binarySearchRecursive
来履行实际的搜索。在私有方法中,我们使用递归的方式来履行二分搜索,直到找到目标元素还是left > right
为止。如果找到目标元素,则返回它的索引,否则返回⑴表示未找到。
tiktok粉丝购买:https://www.smmfensi.com/
TOP