typedef struct LNode *List;
struct LNode{
ElementType Element[MAXSIZE];
int Length;
};
方法1:顺序查找算法
int SequentialSearch(List Tb1,ElementType K)//(有"哨兵")
{//在Element[1]~Element[n]中查找关键字为K的数据元素
int i;
Tb1->Element[0]=K;//建立哨兵
for(i=Tb1->Length;Tb1->Element[i]!=K;i--);
return i;//查找成功返回所在单元下标;不成功返回0
}
int SequentialSearch(List Tb1,ElementType K)//顺序查找的另一种实现(无"哨兵")
{//在Element[1]~Element[n]中查找关键字为K的数据元素
int i;
for(i=Tb1->Length;i>0&&Tb1->Element[i]!=K;i--);
return i;//查找成功返回所在单元下标;不成功返回0
}
{//在表Tb1中查找关键字为K的数据元素
int left,right,mid,NoFound=-1;
left=1; //初始左边界
right=Tb1->Length;//初始右边界
while(left<=right)
{
mid=(left+right)/2;//计算中间元素坐标
if(K<Tb1->Element[mid]) right=mid-1;//调整右边界
else if(K>Tb1->Element[mid]) left=mid+1; //调整左边界
else return mid;//查找成功,返回数据元素的下标
}
return NotFound; //查找不成功,返回-1
}
struct LNode{
ElementType Element[MAXSIZE];
int Length;
};
方法1:顺序查找算法
int SequentialSearch(List Tb1,ElementType K)//(有"哨兵")
{//在Element[1]~Element[n]中查找关键字为K的数据元素
int i;
Tb1->Element[0]=K;//建立哨兵
for(i=Tb1->Length;Tb1->Element[i]!=K;i--);
return i;//查找成功返回所在单元下标;不成功返回0
}
int SequentialSearch(List Tb1,ElementType K)//顺序查找的另一种实现(无"哨兵")
{//在Element[1]~Element[n]中查找关键字为K的数据元素
int i;
for(i=Tb1->Length;i>0&&Tb1->Element[i]!=K;i--);
return i;//查找成功返回所在单元下标;不成功返回0
}
顺序查找算法的时间复杂度为O(n)
方法2:二分查找算法
{//在表Tb1中查找关键字为K的数据元素
int left,right,mid,NoFound=-1;
left=1; //初始左边界
right=Tb1->Length;//初始右边界
while(left<=right)
{
mid=(left+right)/2;//计算中间元素坐标
if(K<Tb1->Element[mid]) right=mid-1;//调整右边界
else if(K>Tb1->Element[mid]) left=mid+1; //调整左边界
else return mid;//查找成功,返回数据元素的下标
}
return NotFound; //查找不成功,返回-1
}
二分查找算法的时间复杂度为O(logN)