A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 华山狙击 中级黑马   /  2014-8-23 10:43  /  996 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 华山狙击 于 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

3 个回复

倒序浏览
角标越界了吧···
回复 使用道具 举报
看api
返回:
如果它包含在数组的指定范围内,则返回搜索键的索引;否则返回 (-(插入点) - 1)。插入点 被定义为将键插入数组的那一点:即范围中第一个大于此键的元素索引,如果范围中的所有元素都小于指定的键,则为 toIndex。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。
回复 使用道具 举报
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)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马