急~~~急~~C语言问题
从键盘输入一个数,然后在一个整型一维数组a[20]中,用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,则打印"Nofound"....
从键盘输入一个数,然后在一个整型一维数组a[20]中,用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,则打印"No found".
展开
展开全部
#include <stdio.h>
int divide_find(int [],const int ,int,int );
int array[20];
int main()
{
int tmp_a,tmp_result;
for(int i=0;i<20;i++) array[i]=i;
scanf("%d",&tmp_a);
tmp_result=divide_find(array,tmp_a,0,19);
if (tmp_result>-1)
printf("find %d\n",tmp_result);
else
printf("No found\n");
return 0;
}
int divide_find(int a[],const int p ,int start,int end)
{
if(start<=end)
{
if (p==a[(start+end)/2])
return (start+end)/2;
else
{
if (p<a[(start+end)/2])
divide_find(a,p,start,(start+end)/2-1);
else
divide_find(a,p,(start+end)/2+1,end);
}
}
else
return -1;
}
int divide_find(int [],const int ,int,int );
int array[20];
int main()
{
int tmp_a,tmp_result;
for(int i=0;i<20;i++) array[i]=i;
scanf("%d",&tmp_a);
tmp_result=divide_find(array,tmp_a,0,19);
if (tmp_result>-1)
printf("find %d\n",tmp_result);
else
printf("No found\n");
return 0;
}
int divide_find(int a[],const int p ,int start,int end)
{
if(start<=end)
{
if (p==a[(start+end)/2])
return (start+end)/2;
else
{
if (p<a[(start+end)/2])
divide_find(a,p,start,(start+end)/2-1);
else
divide_find(a,p,(start+end)/2+1,end);
}
}
else
return -1;
}
展开全部
如果不是有序数组的话,用折半法查找有意义么- -!
如果是有序数组,用个递归算法就可以了。数据结构教材上有的
如果是有序数组,用个递归算法就可以了。数据结构教材上有的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那你先要给数组排序,然后就是算法的问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
几个 if 不就可以出来了么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询