正在加载图片...
state BlkInxSearch(StaticSrhTable SST,InxTab Inx,KeyType kval){ bot=1,top=Inx.len,blFound=FALSE;∥置查找范围初值 if(kval>lnx.elem[top].key)return 0;∥越界 while (bot <top &&!bIFound){ mid =(bot top)/2; if (Inx.elem[mid].key =kval){ ∥查找成功 blFound TRUE;bot mid; 为什么选择bot 而不是top? else if(lnx.elem[mid].key>kva)top=mid-1;W前半区 else bot=mid +1; ∥后半区 }退出循环时,bot所指的为所找的块 bn=lnx.elem[bot].StartAdd;W第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; 川未查找到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 高等教育资讯网 版权所有