1. 程式人生 > >java---二分查詢法

java---二分查詢法

/**
 * 二分查詢法
 * 注: 陣列元素必須有順序
 *
 */
public class sort4 {
	public static void main(String[] args) {
		int [] arr ={1,2,3,4,5,6,7,8};
		 int a  = binarySerarch(arr,7);  //  從這些數中查詢7返回這個數字的索引
		 System.out.println(a);
	}
	private static int binarySerarch(int[] arr, int key) {
		
		int min = 0;                    //  最小的索引
		int max = arr.length - 1;	   //  最大的索引
		
		while(min<=max){
			System.err.println("最大索引" + max + "---" + "最小索引:" + min);
			int mid = (min + max)/2;  //  中間索引
			int midVal = arr[mid];     //  中間索引的值
			
			if (midVal<key) {  //  猜小了
				min = mid + 1;
			}else if(midVal>key) {
				max = mid-1;
			}else {
				return mid;
			}
		}
		return -1;
	}
}