查詢:根據給定的某個值,在查詢表中確定乙個其關鍵字等於給定值的記錄或資料元素。若表中存在這樣的乙個記錄,則稱查詢是成功的,此時查詢的結果為給出整個記錄的資訊,或指示該記錄在查詢表中的位置。若表中不存在關鍵字等於給定值的記錄,則稱查詢不成功,此時查詢的結果可給出乙個空記錄或者空指標。
本篇文章討論在靜態查詢表中的查詢操作-順序查詢.
靜態查詢表:一旦建立,主要是查詢,很少或者不做修改(如插入和刪除)。
輸入:表的長度,表中各個元素。要查詢的表元素。
輸出:要查詢的表元素的位置(1<=pos=length(st)).
執行結果:
順序查詢的查詢過程為:從前向後逐一比較,一旦找到則返回。
輔助巨集:
#define ok 1
#define error 0
#define true 1
#define false 0
#define overflow -1
#define underflow -2
#define null 0
#define table_init_size 100
#define tableincrement 10
typedef int status;
typedef int elemtype;
typedef int keytype;
首先是靜態儲存表的儲存結構定義:
//順序表儲存結構定義
typedef structsstable;
演算法實現:
int locateelem(sstable st,elemtype e)
查詢效能分析-平均查詢長度asl(平均比較次數)
記第i個元素被查詢的概率為pi,則可以計算
asl=n*p1 +(n-1)*p2 +...1*pn+(n+1)*p0
通常所查詢的元素均在st中,此時p0=0;
若查詢保證成功且各元素機率同1/n,則
asl=(n+1)/2;
若成功與否各50%,且各元素被找到的概率同1/2n 則
asl = (n+1)/4 + (n+1)/2 = 3*(n+1)/4;
概率越大越靠後則asl越小,事先不知道概率可動態調整。
查詢 順序查詢
順序查詢的思路 從資料的第乙個元素開始,依次將掃瞄到的關鍵字和給定值key比較。若當前掃瞄到的關鍵字和key相等,則查詢成功 若掃瞄結束還沒有找到和key相等的元素,就表示查詢給定的值不在表中。時間複雜度 o n 優點 1.演算法簡單 2.對錶結構沒有任何要求,用順序表或者用鍊錶都可以。3.表中元素...
查詢 順序查詢
查詢表 由同一種型別的資料元素構成的集合 jing態查詢表 只做查詢操作的查詢表 dong態查詢表 在查詢的過程中,還可以進行插入和刪除等的操作。關鍵字 資料元素中的某個資料項的值 主關鍵字 可以唯一表示乙個記錄的關鍵字 次關鍵字 可以表示多個紀錄的關鍵字 include using namespa...
查詢 順序查詢
順序查詢 定義 順序查詢就是在檔案的關鍵字集合key 1,2,n 中找出與給定的關鍵字key相等的檔案記錄。步驟 1.從檔案的第乙個記錄開始,將每個記錄的關鍵字與給定的關鍵字key進行比較 2.如果查詢到某個記錄的關鍵字等於key,則查詢成功,返回該記錄的位址 如果所有關鍵字都與key進行了比較,但...