|
算法 2.5
int LocateElem(SqList L, ElemType e,
void (*compare)(ElemType, ElemType))
{
//
在顺序表L中查找第1个值与 e 满足判定条件compare( )的元素,
// 若找到,则返回其在 L 中的位序,否则返回0。
i = 1; // i
的初值为第1元素的位序
p = L.elem; //
p 的初值为第1元素的存储位置
while (i <= L.length && !(*compare)(*p++,e))
++i; // 依次进行判定
if (i <= L.length) return i;
// 找到满足判定条件的数据元素为第
i 个元素
else return 0; //
该线性表中不存在满足判定的数据元素
} // LocateElem
此算法的时间复杂度为:O
( ListLength(L)) |
|
:
算法中的基本操作是"判定",它出现在 while 循环中,而函数 compare() 的时间复杂度显然是个常量。因此执行判定的次数取决于元素在线性表中的 "位序",至多和表长相同。
|
|