Arrays类里的binarySearch方法的返回值总结
- 举例原始数组 a 如下:
[3, 5, 8, 17, 12, 2]
- 第一步:必须先对数组进行排序
Arrays.sort(a) ;
,排序后的数组如下:
[2, 3, 5, 8, 12, 17]
- 如果找到关键字,则返回值为关键字在排序后的数组中的位置索引,且索引从0开始。
- 如果没有找到关键字,返回值为负的插入点值,所谓插入点值就是第一个比关键字大的元素在数组中的位置索引,而且这个位置索引从1开始。
//结果显示 0
System.out.println(Arrays.binarySearch(a,2)) ;
//结果显示 -3
//4在数据中没有,插入点即是3和5之间,位置索引从1开始数的话,这个位置就是3,取负即为-3
System.out.println(Arrays.binarySearch(a,4)) ;
重点说明:使用binarySearch查找时,务必先排序。
- 排序后的返回结果是负数就一定说明没找到
- 不排序的话,即使数组中能找到相关关键字,那也有可以返回负数。