折半查找: 设定查找范围的下限low,上限high,由此确定查找范围的中间位置mid;中间位置的值等于待查的值,查找成功中间位置的值小于待查的值,low=mid+1;中间位置的值大于待查的值,high=mid-1直到low>high,查找失败。 package com.experiment2; import java.util.*; public class Main { public static void main(String[] args){ int a[] = {12,34,9,-23,45,6,90,123,19,45,34}; Arrays.sort(a); Scanner in = new Scanner(System.in); int n = in.nextInt(); boolean existed = biSearch(a, 0 , a.length, n); if (existed){ System.out.println("存在!"); }else{ System.out.println("不存在!"); } } public static boolean biSearch(int[] arr, int low, int high, int num){ while ( low <= high){ //错在了这里,注意判断条件 int mid = (low + high) / 2; if (arr[mid] == num){ return true; }else if (num < arr[mid]){ high = mid - 1; biSearch(arr, low, high, num); }else if (num > arr[mid]){ low = mid + 1; biSearch(arr, low, high, num); } } return false; } }