順序查詢
不帶監視哨
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年提出而得名。具體思想就是從無序的陣列中每隔一段間隔挑出來乙個數字...