You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现Binary Search(二分查找)返回结果与预期不符问题求助

问题根因
  • 二分查找的核心执行前提是待查找的数组必须是有序排列,你当前的代码执行顺序存在错误:先调用binSearch执行二分查找,后调用bubbleSort对数组排序,传入二分查找方法的是完全无序的原始数组,自然无法正确匹配元素。
修复方案

只需调整main方法内的代码执行顺序,把数组排序逻辑放到二分查找执行之前即可,修改后的main方法代码如下:

public static void main(String args[]){
    VOperations ob=new VOperations();
    Scanner sc=new Scanner(System.in);

    System.out.println("Enter the number you want to search :");
    int x = sc.nextInt();
    int Arr[] = { 11,6,77,8,5,44,6,9,442,86,73,49,68,82 };

    ob.intializer(Arr);
    ob.show(Arr);
    // 先对数组排序
    ob.bubbleSort(Arr);
    // 再执行二分查找
    int result = ob.binSearch(Arr, x);
    if (result == -1)
        System.out.println("Element not present");
    else
        System.out.println("Element found at "
                           + "index " + result);

    ob.linearSearch(x, Arr);
    sc.close();
}
额外说明

你当前的linearSearch方法存在逻辑瑕疵:如果数组内有多个相同的目标元素,会错误返回Not found,如果不需要做唯一值校验,只要存在匹配就判定找到,可以把判断条件修改为if(c >= 1)。

内容的提问来源于stack exchange,提问作者Markins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:48:02