文档介绍:第九章查找
int Search_Sq(SSTable ST,int key)//在有序表上顺序查找的算法,监视哨设在高下标端
{
  [+1].key=key;
  for(i=1;[i].key>key;i++);
  if(i>||[i].key<key) return ERROR;
  return i;
}//Search_Sq
分析:,.
int Search_Bin_Recursive(SSTable ST,int key,int low,int high)//折半查找的递归算法
{
  if(low>high) return 0; //查找不到时返回0
  mid=(low+high)/2;
  if([mid].key==key) return mid;
  else if([mid].key>key)
    return Search_Bin_Recursive(ST,key,low,mid-1);
  else return Search_Bin_Recursive(ST,key,mid+1,high);
  }
}//Search_Bin_Recursive
int Locate_Bin(SSTable ST,int key)//折半查找,返回小于或等于待查元素的最后一个结点号
{
  int *r;
  r=;
  if(key<r.key) return 0;
  else if(key>=r[].key) return ;
  low=1;high=;
  while(low<=high)
  {
    mid=(low+high)/2;
    if(key>=r[mid].key&&key<r[mid+1].key) //查找结束的条件
      return mid;
    else if(key<r[mid].key) high=mid;
    else low=mid;
  } //本算法不存在查找失败的情况,不需要return 0;
}//Locate_Bin
typedef struct {
                  int maxkey;
                 int firstloc;
               } Index;
typedef struct {
                 int *elem;
                  int length;
                  Index idx[MAXBLOCK]; //每块起始位置和最大元素,其中idx[0]不利用,其内容初始化为{0,0}以利于折半查找
                  int blknum; //块的数目
                } IdxSqList; //索引顺序表类型
int Search_IdxSeq(IdxSqList L,int key)//分块查找,用折半查找法确定记录所在块,块内采用顺序查找法
{
  if(key>[].maxkey) return ERROR; //超过最大元素
  low=1;high=;
  found=0;
  while(low<=high&&!found) //折半查找记录所在块号mid
  {
    mid=(low+high)/2;
    if(key<=[mid].maxkey&&key>[mid-1].maxkey)
      found=1;
    else if(key>[mid].maxkey)