バイナリサーチ(非再帰的)
基本的な導入
また、バイナリサーチバイナリサーチ(バイナリ検索)として知られている、それは高い効率的な検索手法です。しかし、バイナリ検索はリニアテーブルが必要です必見順次記憶構造をキーワードによって、テーブル内の要素命じました。
- まず、テーブル要素によりあると仮定昇順両者が等しい場合、検索キーの比較で記録鍵中間位置テーブルが、次いで、ルックアップが成功し、そうでない場合、二つのサブテーブル前後中間位置に記録テーブルの使用、もしキーワード記録の中間位置が検索キーよりも大きい場合、子テーブルの後に子テーブル、またはさらに検索する前にさらに見えます。プロセスは条件が発見されたレコードを満たすまで繰り返され、検索が成功した場合、または子テーブルが存在しなくなるまで、その時点で検索が失敗します。
比較の数
<ログ2 N <B
オペレータの時間複雑さの毛
O(N)= O(ログ2 n)を
コードの実装
ARR = {1、3、8、10、11、67、100}の例で
public class BinarySerch {
public static void main(String[] args) {
int[] arr = { 1, 3, 8, 10, 11, 67, 100 };
// 测试二分查找
int index = binarySearch(arr, 1);
System.out.println("index=" + index + " 值【" + arr[index] + "】");
}
/**
* @Method_Name:binarySearch
* @Description: 非递归实现二分查找
* @param arr
* 数组
* @param target
* 要查找的数
* @return int 返回对应下标 没有找到返回-1
*/
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (right + left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
}