邪门了,运行结果为什么不对?

zhangbaokun 2007-12-07 11:08:33

import java.util.*;
public class Test2
{

/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
int[] arr = {1,3,4,5,2,3,4,87,21};
Arrays.sort(arr);
for(int x:arr)
System.out.print(x+" ");
System.out.println();
int num = Arrays.binarySearch(arr,4);
System.out.println(num);
}

}
...全文
85 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jr_zhang 2007-12-07
  • 打赏
  • 举报
回复
这段代码的运行结果是4是对的。
你好好的看看API.
public static int binarySearch(int[] a,int key)

这里的返回值是一个索引。第一个"4"在这个经排序后的数组中的索引不就是4吗?

API中是这么说的:

返回:
搜索键的索引,如果它包含在列表中;否则返回 (-(插入点) - 1)。
插入点 被定义为将键插入列表的那一点:即第一个大于此键的元素索引,
如果列表中的所有元素都小于指定的键,则为 list.size()。注意,这
保证了当且仅当此键被找到时,返回的值将 >= 0 。
zhangbaokun 2007-12-07
  • 打赏
  • 举报
回复
看错了...哈哈。结贴
JhunHoonXZ 2007-12-07
  • 打赏
  • 举报
回复
排序后
1,2,3,3,4,4,5,21,87
第一个4出现在arr[4],哪里不对?
beautiful123086 2007-12-07
  • 打赏
  • 举报
回复
楼主想要输出什么结果呢?
zhangbaokun 2007-12-07
  • 打赏
  • 举报
回复
这段代码我运行结果是4?怎么会正常?
JhunHoonXZ 2007-12-07
  • 打赏
  • 举报
回复
不是我翻译的- -#
中文API上直接复制下来的..
JhunHoonXZ 2007-12-07
  • 打赏
  • 举报
回复
你想要什么结果呢?
zhangbaokun 2007-12-07
  • 打赏
  • 举报
回复
我晕,那叫2分法,你那翻译构可以的。。
zhangbaokun 2007-12-07
  • 打赏
  • 举报
回复
我排序了啊,结果也不对
JhunHoonXZ 2007-12-07
  • 打赏
  • 举报
回复
public static int binarySearch(int[] a,int key)
使用二进制搜索算法来搜索指定的 int 型数组,以获得指定的值。
必须在进行此调用之前对数组进行排序(通过上面的 sort 方法)。
如果没有对数组进行排序,则结果是不明确的。
如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。
zhangbaokun 2007-12-07
  • 打赏
  • 举报
回复
谁会弄?

62,623

社区成员

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

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