一、靜態查詢:
只是起查詢或檢索的作用,不涉及插入、刪除,反之為動態查詢。
二、順序查詢
順序查詢過程中往往設定監視哨,在查詢過程中不用每一步都檢查整個表是否查詢完畢。
假設,每個元素的查詢概率相同,順序查詢成功時平均查詢長度為:(n+1)/2;順序查詢不成功時平均查詢長度為:
(n+1)/4
。考慮到查詢不成功的情況,順序查詢表的平均查詢長度為:3(n+1)/4。
順序查詢的優點為:演算法簡單,適應面廣,對錶結構無任何要求;
缺點為:平均查詢長度大,查詢效率低。
三、折半查詢法
首先折半查詢需要求表為有序表,且折半查詢可以描述為一棵二叉分類平衡樹。如此看來,查詢過程只是走了一條從根節點到某個結點的路徑。又因為具有n個結點的判定樹深度為:
折半查詢的平均查詢長度推理如下:
對順序查詢和折半查詢的實現如下:
staticsearch.h
templateint getarraylength(t &array)
typedef struct linearlist list;
bool initlinearlist(list &l,elemtype b,int len)
l.length = 0;
for (int i = 1; i <= len; i++)
return true;
}//順序查詢,返回所查詢元素的位置
status sqsearch(list &l, elemtype key, int len)
//折半查詢
status binarysearch(list &l, elemtype key, int len)
else}}
主函式search.cpp
int main()
; list list1;
len = getarraylength(b);
cout << "查詢陣列為:";
靜態查詢(順序查詢和折半查詢)
聽說過一句話,程式設計之久,除了資料結構和演算法什麼也不屬於我們。為了更好的學習資料結構和演算法,今天決定先把清華大學出版的資料結構 c語言版 書中的演算法實現一遍。現在開始第一彈。貴在堅持。順序查詢 演算法描述 include include 順序表的查詢 define eq a,b a b de...
靜態查詢(順序 折半)
include include void seqsearch int a,int r 順序查詢 if i 0 printf 元素所在位置 d n i else printf 沒有該元素!int binsearch1 int a,int r 折半查詢 非遞迴 return 0 int binsearc...
靜態查詢表 順序查詢 折半查詢 分塊查詢
引言 除去各種線性和非線性的資料結構外,還有一種在實際應用中大量使用的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。對查詢表經常進行的操作有 1 查詢某個 特定的 資料元素是否在查詢表中 2 檢索某個 特定的 資料元素的各種屬性 3 在查詢表中插入乙個資料元素 4 從查詢表中刪去某個資料...