二分查找算法是一种在有序数组中查找特定元素的搜索算法。查找过程从数组的两头元素开始,如果两头元素正好是目标值,则查找过程完结;如果目标值大于或小于两头元素,则在数组大于或小于两头元素的那一半中查找,而不是整个数组。以下是一个二分查找的Java实现:

java

public class BinarySearch {      // Returns index of x if it is present in arr[], else return -1      int binarySearch(int arr[], int x) {          int l = 0, r = arr.length - 1;          while (l <= r) {              int m = l + (r - l) / 2;                // Check if x is present at mid              if (arr[m] == x)                  return m;                // If x greater, ignore left half              if (arr[m] < x)                  l = m + 1;                // If x is smaller, ignore right half              else                  r = m - 1;          }            // if we reach here, then element was not present          return -1;      }        // Driver method to test above      public static void main(String args[]) {          BinarySearch bs = new BinarySearch();          int arr[] = {2, 3, 4, 10, 40};          int n = arr.length;          int x = 10;          int result = bs.binarySearch(arr, x);          if (result == -1)              System.out.println("Element not present in array");          else              System.out.println("Element found at index " + result);      }  }

这段代码首先初始化一个指向数组最右边和最左边的指针(l和r)。而后,它进入一个循环,在循环中,它会计算两头索引(m),查看该索引处的值是否等于x。如果等于,就返回该索引。否则,如果x大于两头值,就在右半局部持续查找;如果x小于两头值,就在左半局部查找。如果在整个数组中都找不到x,就返回-1。