二分搜尋演算法:
設有乙個長度為n的有序表(a0,a1 ... an-1);要求在表中搜尋與給定元素x有相同關鍵字值的元素。
若n=0,顯然搜尋失敗,若n>0,則可將有序表分解成若干個子表,二分搜尋:分成兩個子表。
現以a[mid]為劃分點,mid=(0+(n-1))/2;首先將a[mid]關鍵字值與指定元素x的關鍵字值比較
1、當xa[mid]時,若與x相同關鍵字值的元素在表中,則必在(a[mid+1], ... a[n-1])中
以此類推,分割搜尋區間,最終確定搜尋結果。
package datastructureandalgorithm.binarysearch;
/** * 對半搜尋遞迴演算法
* @author zhen
* */
public class bsearch
private int binarysearch(int x,int array,int low,int high)else return m;
} return -1;
} //對半搜尋迭代演算法
public string bserach(int x,int array)else if(x參考:《資料結構——c++語言描述》
Java 二分搜尋
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列...
Java 二分搜尋 二分查詢
對陣列元素進行逐個查詢顯然是費時費力的工作,我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.接下來我們介紹一種方法 二分搜尋法 二分搜尋法充分利用了元素間的次序關係.基本思想 將n元素分成個數大致相同的涼拌,取arr n 2 與欲查詢的x做比較,如果 下面將採用兩種方式 遞迴 非遞迴 來展示二...
二分搜尋演算法,Java實現
這裡用遞迴和非遞迴的方式實現了二分搜尋 ps 二分搜尋是對已經排序完成的陣列進行搜尋定位,我這裡是以公升序排列為例,可用歸併排序等演算法進行排序 可見我其他博文 二分搜尋演算法,通過比較順序列表中間元素的值,迅速縮小規模查詢元素,時間複雜度為 o n logn public class binary...