B、O(nlog2n)
链式存储的线性表的存取机制是顺序的,要想查找位置为i的元版素必须采用顺序查找法;
顺序存储的权线性表的存取机制是随机的,要想查找位置为i的元素直接用下标法就可以了。
如果要查找元素e在线性表中的位置那么对这两种存储结构而言,必须采用顺序查找法了。
例如:
例如:
int BinSearch(SeqList R,int n, KeyType k)
{
int low=0, high =n-1,mid;
while(low<=high)
{
mid =(low+high)/2;
if(R[mid].key==k)
return mid+1;
if(R[mid].key>k)
return mid-1;
else
low=mid+1;
}
return 0;
}
扩展资料:
假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。
参考资料来源:百度百科-二分查找
B O(nlog2n)