二、顺序表及其应用:
int SeqSearch(List L,KeyType k) { //在顺序表L中顺序查找其关键字等于k的元素,若找到返回该元素的位置,否则为0 L.r[0].key=k; //0号单元做为监视哨 int i=L.lengrh; while(L.r[i].key!=k) i--; retutn i; }
ASL=(求和公式1到n)PiCi = (n+1)/2
int BinSrch(List *L,KeyType k) { //在顺序表L中二分查找其关键字等于k的元素,若找到返回该元素的位置 int low,high,mid,i; low=i=0; high=L->length-1; //置区间初值 while(low<=high) { mid=(low+high)/2; if (k == L->r[mid].key) //找到待查元素 { i = mid; break; } else if (k < L->r[mid].key) high = mid - 1; //未找到,则在前半去查找 else low = mid + 1; //继续在后半区查找 } retutn i; }
ASL=log2(n+1)-1=log2n
思想:(1)应用二分查找算法或简单顺序查找算法,将给定值key与索引表中的关键字比较,以确定待查元素所在的块
(2)应用简单顺序查找算法,在相应块内查找关键字为key的数据元素
ASL=log2(n/s+1)+s/2
原文:https://www.cnblogs.com/hly97/p/12158523.html