元素的查詢 順序查詢

2021-08-27 05:02:24 字數 1653 閱讀 3883

靜態查詢:

方法一 :對於未排序的資料——順序查詢

方法二:排好次序的資料———二分法查詢

順序查詢中分為有」哨兵」的方法和無」哨兵」的方法。

方法一 順序查詢

有「哨兵」的順序查詢如下:

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.表中元素...