Java list 二分查找
时间: 2024-02-26 15:49:34 浏览: 22
在Java中,可以使用List来存储一组元素,并且可以使用二分查找算法在有序的List中查找指定元素的位置。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class BinarySearchExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(2);
numbers.add(5);
numbers.add(8);
numbers.add(12);
numbers.add(16);
numbers.add(23);
numbers.add(38);
numbers.add(56);
// 对List进行排序
Collections.sort(numbers);
int target = 12;
int index = binarySearch(numbers, target);
if (index != -1) {
System.out.println("元素 " + target + " 在List中的索引位置为:" + index);
} else {
System.out.println("元素 " + target + " 不在List中");
}
}
public static int binarySearch(List<Integer> list, int target) {
int left = 0;
int right = list.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (list.get(mid) == target) {
return mid;
} else if (list.get(mid) < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
}
```
在上面的代码中,我们首先创建了一个List对象 `numbers`,并向其中添加了一些整数元素。然后,我们使用 `Collections.sort()` 方法对List进行排序,以确保二分查找算法的正确性。
接下来,我们定义了一个 `binarySearch()` 方法,该方法接受一个有序的List和一个目标元素作为参数。在方法中,我们使用了经典的二分查找算法来查找目标元素的位置。如果找到了目标元素,则返回其索引位置;如果未找到,则返回 -1。
最后,在 `main()` 方法中,我们调用了 `binarySearch()` 方法来查找数字 12 在List中的位置,并输出结果。
请注意,二分查找算法要求在进行查找之前,必须先对List进行排序。否则,结果将是不可预测的。