二分搜索法要求:1。必須采用順序存儲結構。
2.必須根據關鍵詞大小有序排列。
兩次搜索方法的優點和缺點是比較次數更少、搜索速度更快和平均性能更好。它的缺點是需要對要查找的列表進行排序,並且難以插入和刪除。因此,對半搜索的方法適用於搜索沒有頻繁變化的頻繁有序列表。
該算法的思想是:首先將表格中間記錄的關鍵詞與搜索關鍵詞進行比較,如果相等,則搜索成功;否則,使用中間位置記錄將表分成兩個子表。如果中間位置記錄的關鍵字大於搜索關鍵字,則進壹步搜索前面的子表,否則進壹步搜索後面的子表。
重復上述過程,直到找到滿足條件的記錄使搜索成功,或者直到子表不存在,此時搜索不成功。
算法復雜度假設其數組長度為n,算法復雜度為o(log(n))。
下面提供了二分搜索法實現的偽代碼:
二元搜索(最大、最小、最小)
mid-& lt;(最大值+最小值)/2
while(min & lt;=最大值)
中間值=(最小值+最大值)/2
如果
mid=des
然後
返回
中間的
埃爾塞夫
中間的
& gt數據加密標準
然後
max=mid-1
其他
min=mid+1
返回
最大
半搜索方法,也稱為二分搜索法方法,充分利用元素之間的順序關系,采用各個擊破的策略,在最壞的情況下可以使用O(log。
n)完成搜索任務。它的基本思想是將n個元素分成數量大致相同的兩半,將a【n/2】與要查找的X進行比較,如果X = a【n/2】,則查找X,算法終止。諸如
水果x & ltA【n/2】,那麽我們只需要在數組A的左半部分繼續搜索X即可(假設此處數組元素按升序排列)。如果x & gta【n/2】,那麽我們只需要在數組a的右邊。
其中壹半人繼續尋找x。
【編輯本段】C語言代碼
(同Internationalorganizations)國際組織
BinSearch(序列
r,鍵類型
k ){
//在有序表R【1中執行二分搜索法...n】,如果成功則返回節點的位置,如果失敗則返回零。
(同Internationalorganizations)國際組織
低=1,高=n,mid
//設置當前搜索間隔的上限和下限的初始值。
while(low & lt;=高){
//當前搜索間隔r【低...高】不是空的。
mid=low+((高-低)/2);//使用
(低
+
高)
/
2
會出現整數溢出問題。
if(R【mid】。key==K)
返回
mid
//搜索成功返回。
if(R【mid】。key & gtk)
高位=中位1;
//繼續在r【low中搜索...mid-1】
其他
low = mid+1;
//繼續在r【mid+1中搜索...高】
}
返回
0;
//低電平時& gt高表示搜索間隔為空,搜索失敗。
}
//BinSeareh