JAVA實現二分查詢

2021-07-03 23:00:27 字數 1457 閱讀 9171

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

一、概念

二分查詢演算法也稱折半查詢,是一種在有序陣列中查詢某一特定元素的搜尋演算法。

二、演算法思想

搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

三、優缺點

二分查詢演算法的優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,二分查詢演算法適用於不經常變動而查詢頻繁的有序列表。

**實現:

package example.it.binarysearch;

/**

* 二分查詢演算法

* *@param srcarray 有序陣列

*@param key 查詢元素

*@return key的陣列下標,沒找到返回-1

*/public

class

binarysearch ;

system.out.println("遞迴實現:"+binsearch(srcarray,0,srcarray.length-1,94));

system.out.println("while迴圈實現:"+binsearch(srcarray,65));

}// 二分查詢普通迴圈實現

private

static

intbinsearch(int srcarray, int key)

int start=0;

int end=srcarray.length-1;

while(start<=end)else

if(key>srcarray[mid])else

}return -1;

}// 二分查詢遞迴實現

private

static

intbinsearch(int srcarray, int start, int end, int key)

if (start>=end) else

if(key>srcarray[mid])else

if(keyreturn binsearch(srcarray, start,mid-1,key);

}return -1;

}}

Java 實現二分查詢

二分查詢 又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。時間複雜度o h o log2n 演算法思想 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等...

Java實現二分查詢

二分查詢是一種高效的查詢演算法,其基本思想是,在乙個有序的陣列中,先和陣列最中間的值進行比較,如果小於最中間的這個值,則將查詢範圍縮小為左半部分,大於則將查詢範圍縮小為右半部分,每次縮小一半的查詢範圍,直至找到與這個數相等的數。當資料量比較大的時候,二分查詢相對於順序查詢,顯示出明顯的優勢。下圖為二...

二分查詢 java實現

二分查詢 演算法思想 又叫折半查詢,要求待查詢的序列有序。每次取中間位置的值與待查關鍵字比較,如果中間位置的值比待查關鍵字大,則在前半部分迴圈這個查詢的過程,如果中間位置的值比待查關鍵字小,則在後半部分迴圈這個查詢的過程。直到查詢到了為止,否則序列中沒有待查的關鍵字。實現 1.非遞迴 public ...