查找算法的实现和应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4查找算法的实现和应用

实验目的

1.熟练掌握静态查找表的查找方式

2.熟练掌握动态查找表的查找方式

实验内容

1.用顺序查找法对表进行查找

2.用二分查找法对表进行查找

3.建立二叉排序树并对该树进行查找

顺序查找法如下所示:

intSeqsch(ElemType A[ ],intn,KeyType K)

{//从顺序表A的n个元素中顺序查找关键字为K的元素,若成功返回其下标,否则返回-1

inti;

for( i=0;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->datadata)

{

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

p=p->rchild;

else

p=p->lchild;}

if(p==NULL) printf("数据不存在\n",key);

else printf("数据存在\n",key); printf("\n");}

相关文档
最新文档