概述
binarysearch为在指定数组中查找指定值得索引值,该值在范围内找得到则返回该值的索引值,找不到则返回该值的插入位置,如果该值大于指定范围最大值则返回-(maxlength+1),而:
int w=Arrays.binarySearch(a,1,5,8); 查找的范围为索引值1-5,:2,3,4,5,6
8并不在此范围中,且8大于最大索引值的6,所以返回-(5+1):-6
解析
查看java源码,可以看到,binarySearch()方法是重载方法,提供了两种形参方式:
小贴士:binarySearch()方式内部实现用的是二分法查找,所以在查找前需要将数组进行排序,且数组中不能出现相同元素,否则查找出来的索引会不清楚是哪一个的:
1)默认范围(数组长度)查找指定值索引:
格式:
binarySearch(object[ ], object key);
如果key在数组中,则返回搜索值的索引;否则返回-1(key小于数组中的任意一个元素)或者”-“(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素索引。
key的值在数组范围内则索引从0开始计数;
key值不存在数组范围内(大于数组最小元素)则从1开始计数;
实例:
import java.util.Arrays;
public class test {
public static void main(String[] args) {
int[] b = new int[] { 4, 25, 10, 95, 06, 21 };
System.out.println("原数组为:");
for (int dim1 : b) {
System.out.print("" + dim1 + " ");
}
Arrays.sort(b);
System.ou

这篇博客详细介绍了Java中Arrays和Collections的binarySearch方法,包括默认范围和指定范围的查找,以及二分查找的原理和注意事项。同时,提到了Java数组的基础知识和Arrays类的一些其他功能,如排序、赋值和比较。

250

被折叠的 条评论
为什么被折叠?



