順序查詢(監視哨) 折半查詢

2022-07-25 06:48:05 字數 1189 閱讀 1354

順序查詢

不帶監視哨

int search_seq_1(sstable s,elemtype key)

return i;

}

不帶監視哨的寫法中,沒迴圈一次都要判斷兩個條件1、i折半查詢

折半查詢僅適用於對有序表的查詢; 查詢原理是附設三個指標,low,high,mid;初始化分別執行表頭、表尾、表的中間元素,當查詢元素key等於mid所指的時,即查詢成功,當所指元素小於它時,說明key在【low,mid】的區間內,此時令high=mid-1,mid=(low+high)/2;相反當大於時,low=mid+1,mid=(low+high)/2,直到查詢成功;

int search_bin(sstable s,elemtype key)

else if(key完整**:#include#include#include#define maxsize 100 //查詢表的最大儲存容量

typedef char elemtype;

//順序查詢表的順序儲存結構

typedef struct

sstable;

//查詢表初始化

void init_sstable(sstable *s)

//向查詢表輸入元素

void input_sstable(sstable *s)

}//列印查詢表元素

void show_sstable(sstable s)

}//順序查詢(無監視哨的寫法)

int search_seq_1(sstable s,elemtype key)

return -1;

}//順序查詢(帶監視哨的寫法)

int search_seq_2(sstable s,elemtype key)

return i;

}//折半查詢

int search_bin(sstable s,elemtype key)

else if(keyhigh=mid-1;

else

low=mid+1;

}return -1;

}int main()

/* 測試

0 1 2 3 4 5 6

0 1 2 3 4 5 6 44

4program ended with exit code: 0

*/

順序查詢(利用監視哨)的實現

include include includeusing namespace std typedef int keytype typedef int infotype define max 100 typedef struct elemtype typedef structsstable int s...

關於監視哨

哨兵的作用 演算法中引進的附加記錄r 0 稱監視哨或哨兵 sentinel 哨兵有兩個作用 進人查詢 插入位置 迴圈之前,它儲存了r i 的副本,使不致於因記錄後移而丟失r i 的內容 它的主要作用是 在查詢迴圈中 監視 下標變數j是否越界。一旦越界 即j 0 因為r 0 key和自己比較,迴圈判定...

C語言 希爾排序 使用監視哨

希爾排序 shell s sort 是插入排序的一種又稱 縮小增量排序 diminishing increment sort 是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因d.l.shell於1959年提出而得名。具體思想就是從無序的陣列中每隔一段間隔挑出來乙個數字...