已有101人关注
JAVA从入门到精通-第3版
发表在Java图书答疑 2016-02-15
是否精华
版块置顶:
import java.util.Arrays;
public class Example {

public static void main(String[] args) {
int ia[]=new int[]{1,8,9,4,5};
Arrays.sort(ia);
int Index=Arrays.binarySearch(ia, 6);
System.out.println("6的索引位置是"+Index);// TODO Auto-generated method stub

}

}
输出结果为什么是:6的索引位置是-4;而不是-3?
分享到:
精彩评论 2
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2016-02-19
沙发
这个方法使用是二分法查找元素索引位置,你查了一个数组总不存在的值,返回的结果就不一定是什么了,具体的计算过程可以参考api源码:
    private static int binarySearch0(int[] a, int fromIndex, int toIndex,
                                     int key) {
        int low = fromIndex;
        int high = toIndex - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            int midVal = a[mid];

            if (midVal < key)
                low = mid + 1;
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found.
    }
佚名
学分:70 LV3
TA的每日心情
开心
2021-07-05 14:21:40
2016-02-26
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
这个方法使用是二分法查找元素索引位置,你查了一个数组总不存在的值,返回的结果就不一定是什么了,具体的计算过程可以参考api源码:
    private static int binarySearch0(int[] a, int fromIndex, int toIndex,
                                     int key) {
        int low = fromIndex;
        int high = toIndex - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            int midVal = a[mid];

            if (midVal < key)
                low = mid + 1;
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found.
    }
[/FIELDSET]

回复:
  
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照