?? 算法 8.3.txt
字號:
算法 8.3
int Search_Idx ( SSTable ST, indexTable ID, KeyType kval )
{
// 在順序表ST中分塊查找其關鍵字等于給定值kval的數據元素,ID為索引表。
// 若找到,則返回該數據元素在ST中的位置,否則返回0
low = 0; high = ID.length-1; found = FALSE;
if (kval>ID.elem[high].key) return 0; // 給定值kval大于查找表中所有關鍵字
while ( low <=high && !found ) { // 折半查找索引表,確定記錄查找區間
mid = (low+high)/2;
if ( kval < ID.elem[mid].key ) high = mid - 1;
else if ( kval > ID.elem[mid].key ) low = mid +1;
else { found = TRUE; low = mid; }
}//while
s = ID.elem[low].stadr; // 經索引表查找后,下一步的查找范圍定位在第low塊
if ( low < ID.length-1 ) t = ID.elem[low +1].stadr-1;
else t = ST.length;
// s和t為在ST表進行查找的下界和上界,若不是最后一塊,則上界為“下一塊的起始位置之前”
if ( ST.elem[t].key== kval ) return t;
else { // 在ST.elem[s] 至ST.elem[t-1]的區間內進行順序查找
ST.elem[0] = ST.elem[t]; // 暫存ST.elem[t]
ST.elem[t].key = kval; // 設置監視哨
for ( k=s; ST.elem[k].key !=kval; k++ ) ;
ST.elem[t] = ST.elem[0]; // 恢復暫存值
if ( k != t ) return k;
else return 0;
} // else
} // Search_Idx
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -