这是循环体出问题了吗?折半二分法
#include<stdio.h>#include<stdlib.h>
int main()
{
void f(int *p,int k,int n);
int n,i,s,k;
int *a;
printf("intput :");
scanf("%d",&n);
a=(int*)calloc(n,sizeof(int));
for(i=0,s=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]<=s)
printf("该数列不是升序序列,请重新输入");
else
s=a[i];
}
printf("您要查找的数是:");
scanf("%d",&k);
f(a,k,n);
}
void f(int *p,int k,int n)
{
int i,j,c,low,high,mid;
for(i=0,j=n-1;i<=j;)
{
c=(i+j)/2;
low=p[i];
high=p[j];
mid=p[c];
if(mid==k)
{
printf("您要找的数是%d个",c+1);
break;
}
if(mid<k)
i=c+1;
if(mid>k)
j=c-1;
if(i=j&&p[i]!=k)
{
printf("没有你要找的数");
break;
}
}
}