search的前提通常是排序,也就是說在排好序的隊列中,查找才具備通常意義。java
代碼以下:code
public class BinarySearch { //搜索是在排好序的基礎上進行的 public static void main(String[] args) { int[] arr = {1, 3, 5, 7, 9, 11}; System.out.println(BinarySearch.search(arr, 2)); System.out.println(BinarySearch.binarySearch(arr, 9)); } public static int search(int[] arr, int num) { for (int i = 0; i < arr.length; i++) { if (arr[i] == num) { return i; } } return -1; } public static int binarySearch(int[] arr, int num) { //二分搜尋 if (arr.length == 0) { return -1; } int startPos = 0; int endPos = arr.length - 1; int mid = (startPos + endPos) / 2; while (startPos <= endPos) { if (num == arr[mid]) { return mid; } if (num < arr[mid]) { endPos = mid - 1; } if (num > arr[mid]) { startPos = mid + 1; } mid = (startPos + endPos) / 2; } return -1; } }