Excel 怎样用递归求二分查找

2025-04-08 00:48:31
推荐回答(1个)
回答1:

#include

typedef struct
{
int a[30];
int length;
}sqtable;

sqtable st;

void creat(int k)
{
int i;
printf("输入有序数组(从小到大):\n");
st.a[0]=-100;
for(i=1;i<=k;i++)
{
scanf("%d",&(st.a[i]));
if(st.a[i]{
printf("数字输入错误!\n");
i--;
}
}
st.length=k;
printf("数组已正确输入.\n");
}

void stfind(sqtable st,int y,int l,int h)
{
if(y==st.a[(l+h)/2]) printf("找到 %d ,位于第%d个数.\n",y,(l+h)/2);
else if(l==h) printf("没找到 %d.\n",y);
else//折半
if(yelse if(y>st.a[(l+h)/2]) stfind(st,y,((l+h)/2+1),h);

}

int main()
{
int n,x,l,h;
printf("输入个数n:\nn=");
scanf("%d",&n);
creat(n);
printf("输入你想找的数值:");
scanf("%d",&x);
l=1;
h=st.length;
stfind(st,x,l,h);
}