靜態查詢:
方法一 :對於未排序的資料——順序查詢
方法二:排好次序的資料———二分法查詢
順序查詢中分為有」哨兵」的方法和無」哨兵」的方法。
方法一 順序查詢
有「哨兵」的順序查詢如下:
1. 思路:
(1)初始化建立儲存資料的結構體list;
(2)給靜態陣列賦初值tb.elem[i];
(3)建立乙個「哨兵」 即tb.elem[0],並將其賦予值為所要查詢的k值;
(4)指標首先指向末尾元素,依次由末尾向開始遍歷;
(5)遍歷儲存的陣列並判斷是否存在要查詢的k值;
(6)若存在則返回該k值所在的序號i,若不存在則返回序號值為0;
靜態儲存資料,如圖所示:
/*建立結構體*/
typedef
structlist;
/*賦予結構體陣列為:02867,長度為:5*/
void creat(list &tb)
/*判斷兩個數是否相等*/
bool eq(int i,int key)
else
return0;}
/*有哨兵的方法,遍歷判斷*/
int sequentialsearch(list tb,keytype k)
/*主函式*/
void main()else
return ;
}
3 .執行截圖:
尋找 66這個值,沒找到:
尋找 8 這個值,找到了,並返回序號:
無「哨兵」的順序查詢:
思路:
(1)初始化建立儲存資料的結構體list;
(2)給靜態陣列賦初值tb.elem[i];
(3)遍歷判斷條件:序號i大於0且當前元素不為所找元素k;
(4)指標首先指向末尾元素,依次由末尾向開始遍歷;
(4)遍歷儲存的陣列並判斷是否存在要查詢的k值;
(5)若存在則返回該k值所在的序號i,若不存在則返回序號值為0;
//注:不需要把第乙個元素賦值為所尋的k值;
**:將上面有」哨兵」遍歷的方法中的 sequentialsearch(list tb,keytype k)改為:
/*無哨兵的方法,遍歷判斷*/
int sequentialsearch(list tb,keytype k)
3.執行截圖:如有」哨兵」方法一樣;
參考部落格原址:
順序表內查詢元素
演算法功能 分別按序號和按內容在順序表中查詢元素 演算法思路 getelem sqlist l,int i 查詢順序表l中第i個資料元素,直接在表中定位,並返回l.elem i 1 locateelem sqlist l,elemtype e 查詢順序表l中與給定值e相等的資料元素,若找到 與e相等...
順序表查詢指定元素
問題描述 本題要求實現乙個函式,要求從順序表中查詢指定元素,並返回第乙個查詢成功的元素在表中的位置序號,若查詢失敗,則返回0 函式介面定義 int locateelem sqlist l,elemtype e 其中sqlist結構定義如下 typedef structsqlist 裁判測試程式樣例 ...
查詢 順序查詢
順序查詢的思路 從資料的第乙個元素開始,依次將掃瞄到的關鍵字和給定值key比較。若當前掃瞄到的關鍵字和key相等,則查詢成功 若掃瞄結束還沒有找到和key相等的元素,就表示查詢給定的值不在表中。時間複雜度 o n 優點 1.演算法簡單 2.對錶結構沒有任何要求,用順序表或者用鍊錶都可以。3.表中元素...