1. 程式人生 > >用java實現的簡單的二分查詢演算法

用java實現的簡單的二分查詢演算法

一、什麼是二分查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

二、例項

查詢一給定的值是否在指定的陣列中,如果存在輸出在陣列中的下標,如果不存在則輸出-1

public static int getIndex(int target, int[] array) {
		if (array == null || array.length == 0)
			return -1;
		if (target < array[0] || target > array[array.length - 1])
			return -1;
		int left = 0;
		int right = array.length - 1;
		int mid = (left + right) / 2;
		while (left <= right) {
			if (target < array[mid])
				right = mid - 1;
			if (target > array[mid])
				left = mid + 1;
			if (target == array[mid])
				return mid;
			mid = (left + right) / 2;
		}
		return -1;
	}
public static void main(String[] args) {
	int num[] = { 2, 3, 4, 6, 10, 20, 31, 35, 42, 53, 60, 90 };
	System.out.println(getIndex(7, num));
}
 Java  二分查詢