靜態查詢 順序查詢和折半查詢法

2021-08-02 09:15:32 字數 1350 閱讀 9552

一、靜態查詢:

只是起查詢或檢索的作用,不涉及插入、刪除,反之為動態查詢。

二、順序查詢

順序查詢過程中往往設定監視哨,在查詢過程中不用每一步都檢查整個表是否查詢完畢。

假設,每個元素的查詢概率相同,順序查詢成功時平均查詢長度為:(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 從查詢表中刪去某個資料...