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
相关产品推荐
相关产品推荐

