查找算法的实现和应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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->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 p=p->rchild; else p=p->lchild;} if(p==NULL) printf("数据不存在\n",key); else printf("数据存在\n",key); printf("\n");}