Java演算法之二分查詢演算法

2021-08-07 11:38:45 字數 1129 閱讀 4847

折半查詢又叫二分法查詢,在乙個查詢區間中,確定出查詢區間的中心位置,用待查詢資料元素的關鍵字與中心位置上的資料元素的關鍵字比較,若兩者相等,則查詢成功;否則,若前者小於後者,則把查詢區間定為原查詢區間的前半段繼續這樣的過程;否則,則把查詢區間的後半段繼續這樣的過程。

二分查詢演算法是建立在有序陣列基礎上的。演算法思想為:

1. 查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則查詢過程結束;

2. 如果某一待查詢元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟第1點一樣從中間元素開始繼續進行查詢。

3. 如果在某一步驟陣列為空,則代表找不到。

採用二分法查詢時,資料需是排好序的。基本思想:假設資料是按公升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功;若x小於當前位置值,則在數列的前半段中查詢;若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。

二分查詢有while迴圈和遞迴查詢兩種,原始碼使用迴圈查詢陣列中資料。

package com.algorithm;

/** * 二分查詢

*@author administrator

* */

public

class

binarysearch

while(beginindex <= endindex) else

if(data>dataset[midindex]) else

} return -1;

} public

static

void

main(string args) ; // 測試陣列

system.out.print("你查詢的資料在陣列中下標是:"+ binarysearch.binarysearch(test1,59));

}}

演算法效果:

你查詢的資料在陣列中下標是:2
二分查詢法的時間複雜度為o(log n),比較簡單。也是面試中常考的乙個知識點。

推薦部落格:

二分查詢各種情況大總結 :二分查詢演算法不同場景的整理、

二分查詢專題:面試中常見的二分查詢演算法整理。

java演算法之二分查詢

package com.hym.test.algorithms public class binaryserch public int searchbycycle int thefindnum else if begin end else else if thefindnum arraytest m...

Java排序演算法之二分查詢

二分查詢特定整數在整型陣列中的位置 非遞迴 查詢線性表必須是有序列表 paramdataset paramdata returnindex public int binarysearch int dataset,int data else if data dataset midindex else ...

演算法之二分查詢

總時間限制 1000ms 記憶體限制 65536kb 描述在乙個非降序列中,查詢與給定值最接近的元素。輸入第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數...