#include <iostream>
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType *Element; //数组的起始地址
int length; //数组的长度
}StaticTable;
int SequentialSearch(StaticTable *Tbl, ElemType K)
{
//在表Tbl中查找关键词为K的数据元素
int i;
Tbl->Element[0] = K; //建立哨兵
for (i = Tbl->length; Tbl->Element[i] != K; ++i);
return i; //查找成功返回数据元素所在单元下标,查找不成功返回0
}
int BinarySearch(StaticTable *Tbl, ElemType K)
{
//在表Tbl中查找关键词为K的数据元素
int left = 1; //初始左边界
int right = Tbl->length; //初始右边界
while (left <= right)
{
int 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 -1; //查找不成功,返回-1
}
顺序查找与二分查找
最新推荐文章于 2022-03-16 20:32:37 发布