6.折半查找的递归算法
ElemType array[];
int BinSearchRec(ElemType key,int low,int high){
if(low>high) return -1;
int mid=(low+high)/2;
if(key>array[mid])
Search(key,mid+1,high);
else if(key<array[mid])
Search(key,low,mid-1);
else return mid;
}
7.将经常被检索的结点尽量置于表的前端
若找到指定节点,将该节点与其前驱节点(若存在)交换。设计顺序结构和链式结构的线性表上实现上述策略的顺序检索算法。
int SeqSearch(dataType R[],Elemtype k){
int i=0;
while((R[i].key!=k)&&(i<n)) i++;
if(i<n&&i>0){
temp=R[i];R[i]=R[i-1];R[i-1]=temp; //找到就交换
return --i; //返回交换后的位置
}
return -1; //交换失败
}