黑马程序员技术交流社区

标题: 数组查询问题 求指教 [打印本页]

作者: 华山狙击    时间: 2014-8-23 10:43
标题: 数组查询问题 求指教
本帖最后由 华山狙击 于 2014-8-30 12:01 编辑

package practice;
import java.util.Arrays;
public class test {        
                public static void main(String args[]){                        
                        int arr[]=new int[]{4,25,10};
                        Arrays.sort(arr);
                        int index=Arrays.binarySearch(arr,0,2,8);
                        System.out.println(index);
                        }
                }
输出的结果为什么不是-1


作者: 黑马-胡明    时间: 2014-8-23 13:52
角标越界了吧···
作者: cs8630323    时间: 2014-8-23 14:03
看api
返回:
如果它包含在数组的指定范围内,则返回搜索键的索引;否则返回 (-(插入点) - 1)。插入点 被定义为将键插入数组的那一点:即范围中第一个大于此键的元素索引,如果范围中的所有元素都小于指定的键,则为 toIndex。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。
作者: 粺¹³¼畅    时间: 2014-8-23 14:28
binarySearch
public static int binarySearch(char[] a,
                               int fromIndex,
                               int toIndex,
                               char key)使用二分搜索法来搜索指定的 char 型数组的范围,以获得指定的值。必须在进行此调用之前对范围进行排序(通过 sort(char[], int, int) 方法)。如果没有对范围进行排序,则结果是不确定的。如果范围包含多个带有指定值的元素,则无法保证找到的是哪一个。

参数:
a - 要搜索的数组
fromIndex - 要搜索的第一个元素的索引(包括)
toIndex - 要搜索的最后一个元素的索引(不包括)
key - 要搜索的值
返回:
如果它包含在数组的指定范围内,则返回搜索键的索引;否则返回 (-(插入点) - 1)。插入点 被定义为将键插入数组的那一点:即范围中第一个大于此键的元素索引,如果范围中的所有元素都小于指定的键,则为 toIndex。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。

题目中 插入点是25 角标为1,所以返回值(-(1)-1)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2