二分查詢演算法:
是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。折半搜尋每次把搜尋區域減少一半,時間複雜度為ο(logn) 。
【二分查詢要求】:1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。
實現**
package com.teradata.lsw.sort;
public class binarysearch ;
system.out.println(binarysearch(a, 11));
system.out.println(binarysearch(a, 21, 0, a.length - 1));
}/**
* 二分查詢的遞迴實現
* * @param a
* @param e
* @param low
* @param high
* @return
*/private static int binarysearch(int a, int e, int low, int high) else if (a[middle] > e) else
}return -1;
}/**
* 二分查詢的非遞迴實現
* * @param a
* @param e
* @return
*/private static int binarysearch(int a, int e) else if (a[middle] > e) else
}return -1;}}
折半查詢的演算法討論:
優點:asl≤log2n,即每經過一次比較,查詢範圍就縮小一半。經log2n 次計較就可以完成查詢過程。
缺點:因要求有序,所以要求查詢數列必須有序,而對所有資料元素按大小排序是非常費時的操作。另外,順序儲存結構的插入、刪除操作不便利。
二分查詢演算法java實現
1 演算法概念。二分查詢演算法也稱為折半搜尋 二分搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。請注意這種演算法是建立在有序陣列基礎上的。2 演算法思想。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間...
二分查詢演算法(Java實現)
二分查詢測試類 注意 二分查詢必須用在有序列表中進行二分查詢 public class binarychoptest for int i 0 i 10 i sign 1 使用二分查詢和遞迴的結合進行查詢 時間複雜度 o logn param arrays 有序陣列 param target 要查詢的...
演算法 二分查詢演算法(Java實現)
1 前提 二分查詢的前提是需要查詢的陣列必須是已排序的,我們這裡的實現預設為公升序 2 原理 將陣列分為三部分,依次是中值 所謂的中值就是陣列中間位置的那個值 前,中值,中值後 將要查詢的值和陣列的中值進行比較,若小於中值則在中值前面找,若大於中值則在中值後面找,等於中值時直接返回。然後依次是乙個遞...