java二分查找,查找成功返回所有位置序号
时间: 2023-11-09 13:12:46 浏览: 66
在Java中,可以使用以下代码实现二分查找并返回所有匹配的位置序号:
```java
public static List<Integer> binarySearch(int[] arr, int target) {
List<Integer> result = new ArrayList<>();
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
result.add(mid);
int i = mid - 1;
while (i >= 0 && arr[i] == target) {
result.add(i);
i--;
}
i = mid + 1;
while (i < arr.length && arr[i] == target) {
result.add(i);
i++;
}
return result;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return result;
}
```
该方法接收一个有序数组和要查找的目标值,返回一个包含所有匹配位置序号的列表。如果目标值不存在,则返回空列表。
该方法的实现利用了二分查找的基本思想,在找到目标值的位置后,分别向左和向右扫描数组,将所有匹配的位置序号添加到结果列表中。
阅读全文