查找算法的实现和应用
- 格式:docx
- 大小:15.61 KB
- 文档页数:5
实验4查找算法的实现和应用
实验目的
1.熟练掌握静态查找表的查找方式
2.熟练掌握动态查找表的查找方式
实验内容
1.用顺序查找法对表进行查找
2.用二分查找法对表进行查找
3.建立二叉排序树并对该树进行查找
顺序查找法如下所示:
intSeqsch(ElemType A[ ],intn,KeyType K)
{//从顺序表A的n个元素中顺序查找关键字为K的元素,若成功返回其下标,否则返回-1
inti;
for( i=0;i<n;i++)
{
if(A[i].key==K)
break;}
if(i<=n-1) //查找成功返回下标,否则返回-1
return i;
elsereturn -1;}
二分查找法如下所示
int BinarySearch(int *array, int aSize, int key) {
if ( array == NULL || aSize == 0 )
return -1;
int low = 0;
int high = aSize - 1;
int mid = 0;
while ( low <= high )
{
mid = (low + high )/2;
if ( array[mid] < key)
low = mid + 1;
else if ( array[mid] > key )
high = mid - 1;
else
return mid; }
return -1; }
二叉排序树查找如下(伪代码)void Create(BiTNode *B) //建立
{
int m;
char r;
BiTNode *p,*q;
p=NULL;
printf("请输入顶点数据:");
while(r!='\n')
{
scanf("%d%c",&m,&r);
if(p==NULL)
{
B->data=m;
p=B;}
else
{
q=(BiTNode *)malloc(sizeof(BiTNode));
q->data=m;
q->lchild=NULL;q->rchild=NULL;
p=B;
while(p->data!=q->data)
{
if(p->data<q->data)
{
if(p->rchild==NULL)
p->rchild=q;
p=p->rchild;}
else
{
if(p->lchild==NULL)
p->lchild=q;
p=p->lchild;}}}}}
void Search(BiTNode *B,int key)//查找
{
BiTNode *p;
p=B;
while(p!=NULL&&p->data!=key)
{
if(p->data<key)
p=p->rchild;
else
p=p->lchild;}
if(p==NULL) printf("数据不存在\n",key);
else printf("数据存在\n",key); printf("\n");}。