演算法學習之折半查詢

2021-07-16 09:55:27 字數 592 閱讀 9449

二分查詢又稱折半查詢

優點:比較次數少,查詢速度快,平均效能好 

缺點:要求待查表為有序表,且插入刪除困難。 

因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。

折半查詢流程: 

首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

應該是非常簡單,直接上程式:

// 二分查詢

//a:表示排好序的陣列

//n:表示陣列的長度

//key:查詢的關鍵字

public

static

intbinarysearch(int a, int n, int key) else

if (key < a[mid]) else

}return -1;

}

這個就不演示了,不懂的可以回去試試,先用前面介紹過的排序演算法,再折半查詢。

演算法學習 之查詢

順序查詢 假設靜態查詢表的順序儲存結構為 typedef struct sstable int search seq sstable st,keytype key search seq 比較無監視哨的查詢演算法 int location sstable st elemtype e location ...

查詢演算法之折半查詢

binary search 折半查詢又稱二分查詢,要求資料序列呈線性結構,即先排序,在查詢。可以明顯的提高查詢速度,其流程如下 預設陣列為a 需查詢的值為x 首先設定3個變數low mid high,分別儲存陣列元素開始 中間和末尾元素的序號。接著進行以下判斷。1 如果陣列中序號為mid的值與需查詢...

演算法學習之查詢1

首先考慮的是基本的資料結構 第一類 查詢有無 set 元素 a 是否存在,通常用set 集合 set只儲存鍵,而不需要對應其相應的值。set中的鍵不允許重複 第二類 查詢對應關係 鍵值對應 dict 元素 a 出現了幾次 dict 字典 dict中的鍵不允許重複 第三類 改變對映關係 map 通過將...