分析圖
package com.bjpowernode.demo02;
/**
* 二分查找/折半查找
* @author Administrator
*
*/
public class Test12 {
public static void main(String[] args) {
//定義數組, 折半(二分)查找前, 數組必須由小到大排序
int [] data = {7, 21, 56, 66, 89, 111, 543};
int index = binarySearch( data, 66);
System.out.println( index );
System.out.println( binarySearch(data, 7));
System.out.println( binarySearch(data, 543));
System.out.println( binarySearch(data, 222));
}
//在data數組中查找元素key,返回元素在數組中的索引值, 如果數組中沒有該元素,返回-1
private static int binarySearch(int[] data, int key) {
int from = 0 ;
int to = data.length-1;
int mid = (from + to)/2;
while(from <= to){
if ( data[mid] == key) {
return mid;
}else if (data[mid] < key) {
//在右一半
from = mid+1;
mid = (from + to)/2;
}else{ //左一半
to = mid-1;
mid = (from + to)/2;
}
}
return -1;
}
}