二分查詢演算法的JAVA實現

2021-06-22 19:18:44 字數 1105 閱讀 5701

二分查詢演算法:

是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。折半搜尋每次把搜尋區域減少一半,時間複雜度為ο(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 原理 將陣列分為三部分,依次是中值 所謂的中值就是陣列中間位置的那個值 前,中值,中值後 將要查詢的值和陣列的中值進行比較,若小於中值則在中值前面找,若大於中值則在中值後面找,等於中值時直接返回。然後依次是乙個遞...