用java帮我写一个二分法求局部最小值
时间: 2023-02-21 11:15:54 浏览: 109
我可以帮你写一段Java代码,用二分法求解局部最小值。下面是一段示例代码:public class BinarySearch {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) {right = mid - 1;else {left = mid + 1;return -1;
相关问题
二分法查找最大最小值c
二分法是一种高效的查找算法,可以用来查找一个有序数组中的最大值和最小值。具体实现方法如下:
1. 将数组分成两个部分,分别查找左半部分和右半部分的最大值和最小值。
2. 将左半部分的最大值和最小值以及右半部分的最大值和最小值进行比较,得到整个数组的最大值和最小值。
下面是C语言的实现代码:
```
#include <stdio.h>
void findMinMax(int arr[], int low, int high, int *min, int *max)
{
int mid, leftMin, leftMax, rightMin, rightMax;
// 如果数组只有一个元素
if (low == high) {
*min = arr[low];
*max = arr[low];
return;
}
// 如果数组有两个元素
if (high == low + 1) {
if (arr[low] > arr[high]) {
*max = arr[low];
*min = arr[high];
} else {
*max = arr[high];
*min = arr[low];
}
return;
}
// 如果数组有多个元素
mid = (low + high) / 2;
findMinMax(arr, low, mid, &leftMin, &leftMax);
findMinMax(arr, mid + 1, high, &rightMin, &rightMax);
if (leftMin < rightMin) {
*min = leftMin;
} else {
*min = rightMin;
}
if (leftMax > rightMax) {
*max = leftMax;
} else {
*max = rightMax;
}
}
int main()
{
int arr[] = {100, 2, 3, -2, -8, -6, -9, -10, 50, 2, -1};
int n = sizeof(arr) / sizeof(arr[0]);
int min, max;
findMinMax(arr, 0, n - 1, &min, &max);
printf("最小值:%d,最大值:%d\n", min, max);
return 0;
}
```
用java写一个二分法
好的,下面是用Java写一个二分法的示例代码:
```
public class BinarySearch {
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 -1;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int target = 4;
int result = binarySearch(arr, target);
if (result == -1) {
System.out.println("Element not present");
} else {
System.out.println("Element found at index " + result);
}
}
}
```
该代码会在一个有序的整数数组中查找一个给定的数,如果找到则返回其索引,否则返回 -1。二分法是通过不断缩小查找区间的范围来进行查找,时间复杂度为 O(log n)。
阅读全文