您的位置:首页 > 其它

查找(Searching)

2016-03-28 20:58 323 查看
1. 查找:根据某个给定关键字K,从集合R中找出关键字与K相同的记录。

1.1 静态查找:集合中记录是固定的。没有插入和删除操作,只有查找。

1.2 动态查找:集合中记录是动态变化的,除查找,还可能发生插入和删除

2. 顺序查找:

<span style="font-size:18px;">查找实现一:
int SequentialSearch(StaticTable* Tb1, ElementType K)
{ /*在表Tb1[1]~Tb1
中查找关键字为K的数据元素*/
int i;
Tb1->Element[0] = K; /*建立哨兵*/
for(i = Tb1->Length; Tb1->Element[i] != K; i--);
return i; /*查找成功返回所在单元下标,不成功返回0*/
}

查找实现二:
int SequentialSearch(StaticTable* Tb1, ElementType K)
{
int i;
for(i = Tb1->Length; i > 0 && Tb1->Element[i] != K; i--);
return i;
}

</span>







3. 二分查找法(Binary Search):











<span style="font-size:18px;">int BinarySearch(StaticTable* Tbl, ElementType K)
{	/*在表Tbl中查找关键字为K的数据元素*/
int left, right, mid, NoFound = -1;

left = 1; /*初始左边界*/
right = Tbl->Length;/*初始右边界*/
while(left <= right)
{
mid = (left + right)/2;/*计算中间元素坐标*/
if(K < Tbl->Element[mid])	right = mid - 1;/*调整右边界*/
else if(K > Tbl->Element[mid])	left = mid + 1;/*调整左边界*/
else return mid; /*查找成功,返回数据元素的下标*/
}
return NoFound; /*查找不成功,返回-1*/
}</span>




二分查找算法具有对数的时间复杂度O(logN)





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: