求解答折半法问题(小白)
题目:输入15个数存在数组中,用冒泡排序按升序排列,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“no found”。要求:输入数组元素、查找,排序分别用子函数实现我的代码:#include<stdio.h>
int a[15];
void F1();
void F2();
void F3();
void F1()//输入数组
{
int i;
for(i=0;i<15;i++)
scanf("%d",&a[i]);
}
void F2()//冒泡排序
{
int i,j,t;
for(j=0;j<14;j++)
{
for(i=0;i<=13-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
void F3()//折半法
{
int l=0,h=14,x,m;
scanf("%d",&x);
while(l<h)
{
m=(l+h)/2;
if(x==a[m])
break;
if(x>a[m])
h=m;
else
l=m;
if((l==h) && x!=a[h])
printf("no found");
}
printf("该数是数组中的第%d个元素",m+1);
}
int main()
{
F1();
printf("\n");
F2();
F3();
return 0;
}
正确运行:在这里给出一组输入。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
10
在这里给出相应的输出。例如:
该数是数组中的第10个元素
我的运行:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 10
no found该数是数组中的第1个元素