java求助,求解答

MaQkun 2019-11-16 04:03:44
Arrays数组的二分搜索法 查数组的时候查不到int 类型的45 我的打印结果是-7

代码和图片会附上
public class ArraysDemo {
public static void main(String[] args) {
function1();
}
/*
* static int binarySearch(数组,被查找的元素)
* 数组的二分搜索法
* 返回元素在数组中出现的索引
* 元素不存在,返回的是-(插入点-1)
*/
public static void function1() {
int[] arr = {45,45,45,21,45,22,54};
int index = Arrays.binarySearch(arr,45);
System.out.println(index);

}
}
...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2019-11-16
  • 打赏
  • 举报
回复
引用 1 楼 雪飞梦魂天 的回复:
你的数组没有排序,被查找元素默认不是数组中的元素,进行类似插入操作;替代了54的位置,所以返回结果-7. binarySearch(Object[] a, Object key) a: 要搜索的数组 key:要搜索的值 如果key在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。 要在使用二分法之前保证数组排序正确。Arrays.sort(arr);
好的 谢谢啦 我刚试了一下 确实是忽略了二分法的排序问题
雪飞梦魂天 2019-11-16
  • 打赏
  • 举报
回复
你的数组没有排序,被查找元素默认不是数组中的元素,进行类似插入操作;替代了54的位置,所以返回结果-7.
binarySearch(Object[] a, Object key)
a: 要搜索的数组
key:要搜索的值
如果key在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。

要在使用二分法之前保证数组排序正确。Arrays.sort(arr);


62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧