public class BinarySearch { public static void main(String[] args) { int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 }; int i = 12; System.out.println("您所要查找數 "+i+" 的位置是: "+binarySearch(a,i)); } //二分查找 public static int binarySearch(int a[],int m) { if(a.length == 0) return -1; int begin = 0; //起始位置 int end = a.length - 1; //末尾位置 int mid = (begin + end) / 2; //要查找的中間位置 while(begin <= end) { if(a[mid] == m) { //返回找到的位置 return mid; }else if(a[mid] > m) { //如果中間位置的值比所要找的值大,那么末尾位置指向中間位置的上一個位置 end = mid - 1; }else{ //如果中間位置的值比所要找的值小,那么起始位置指向中間位置的下一個位置 begin = mid + 1; } mid = (begin + end) / 2; } return -1; } }
運行結果是:
您所要查找數 12 的位置是: 6