在堆区申请10个连续空间,手动输入10个数(递增),输入关键字key,采用折半查找方式查找关键字是否存在,存在给出位置,不存在,输出查找失败。
注意:main函数在main.c 输入函数,输出函数,查找函数,在find.c
main.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
extern void find(int *p,int n,int key);
int main(int argc, const char *argv[])
{ int i,key;
int *p=malloc(sizeof(4)*10);
printf("请输入数组");
{
for(i=0;i<10;i++)
{
scanf("%d",p+i);
}
}
printf("请输入要查找的数");
scanf("%d",&key);
find(p,10,key);
free(p);
return 0;
}
find.c
#include <myhead.h>
void find(int *p,int n,int key)
{
int i=0,j=n-1,mid,sub=-1;
while(i<=j)
{
mid=(i+j)/2;
if(key>p[mid])
{
i=mid+1;
}
else if(key<p[mid])
{
j=mid-1;
}
else
{
sub=mid+1;break;
}
}
if(sub!=-1)
{
printf("在第%d个位置",sub);
}
else
{
printf("查找失败");
}
}