顺序表的二分法查找,帮帮我吧
#include<stdio.h>#include<conio.h>
#define maxsize 5
#define NULL 0
typedef struct d
{
int data[maxsize+1];
int last;
}sq;
void InsertSort(sq R);
int find(int , sq key);
void main()
{
int num,j;
sq line;
int i;
char p='y';
printf("请输入顺序表数据:");
printf("\n");
for(i=1;i<=5;i++)
{
scanf("%d",&line.data[i]);
printf("\n");
}
line.last=i;
void InsertSort(sq R);
printf("\n");
printf("顺序表如下:\n");
for(j=1;j<6;j++)
{
printf("%d ",line.data[j]);
}
while((p=='y')|(p=='Y'))
{
printf("\n");
printf("请输入要查找的数据:");
scanf("%d",&num);
printf("\n");
find(num,line);
printf("若继续查找请输入y,否则按任意键结束\n");
p=_getch();
printf("\n");
}}
void InsertSort(sq R)
{
int a,b;
for(a=2;a<=5;a++)
if(R.data[a]<R.data[a-1])
{
R.data[0]=R.data[a];b=a-1;
do
{
R.data[b+1]=R.data[b];
b--;
}
while(R.data[0]<R.data[b]);
R.data[b+1]=R.data[0];
}
}
int find(int n,sq key)
{
int low,high,mid;
low=1;
high=key.last;
while(low<=high)
{
mid=(low+high)/2;
if(n==key.data[mid])
{
printf("查找成功,数据位置为:%d\n",mid);
return 1;
}
if(n<key.data[mid])
high=mid-1;
else
low=mid+1;
}
printf("查找失败\n");
return 0;
}