正在加载图片...
state BlkInxSearch(StaticSrhTable SST, InxTab Inx, Key Type kval) bot=1,top=nx|en, blFound= FALSE;∥置查找范围初值 if(kva|> Inxelem[top]key) return0;∥越界 while(bot < top & !blFound)t mid =(bot top)/2 f( nx.elem]key==kva){∥/查找成功 blFound TRUe: bot mid 为什么选择bot 而不是top? else f( nx elem(mid]key>kva)top=md-1;∥前半区 else bot mid +1 ∥后半区 }∥退出循环时,bot所指的为所找的块 bn=inκelem[bo! StartEd;∥第bot块的数据记录起始地址 if (bot < Inx. len en= Inx elem[bot 1]. StartAdd-1 else en= sst.len ∥第bot块的数据记录尾地址 for(i=bn; (<=en)&& (SsTelemi]. key ! =kval); i ++ if (i<=en return i return 0 ∥查找到state BlkInxSearch(StaticSrhTable SST, InxTab Inx, KeyType kval){ bot = 1, top = Inx.len, blFound = FALSE; // 置查找范围初值 if (kval > Inx.elem[top].key) return 0; // 越界 while (bot <= top && !blFound) { mid = (bot + top) / 2; if (Inx.elem[mid].key == kval) { // 查找成功 blFound = TRUE; bot = mid; } else { if (Inx.elem[mid].key > kval) top = mid - 1; // 前半区 else bot = mid + 1; // 后半区 } } //退出循环时,bot所指的为所找的块 bn = Inx.elem[bot].StartAdd; //第bot块的数据记录起始地址 if (bot < Inx.len) en = Inx.elem[bot + 1].StartAdd – 1; else en = SST.len; //第bot块的数据记录尾地址 for (i = bn; (i <= en) && (SST.elem[i].key != kval); i++); if (i <= en) return i; return 0; //未查找到 } 为什么选择bot 而不是top?
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有