c++我这哪错了啊?

来源:百度知道 编辑:UC知道 时间:2024/06/09 23:45:45
用二分法,怎么就查找不出来啊?

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
void main()
{
int a[N],i,j,num,t,low=0,high=N,mid;
srand((unsigned)time(NULL));
for(i=0;i<N;i++)
{
a[i]=rand()%100+1;
}
for(i=0;i<N;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
printf("排列后!\n");
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<N;i++)
{
printf("%d\n",a[i]);
}
printf("请输入你想要查找的数字:");
scanf("%d",&num);
for(i=0;i<N;i++)
{
mid=(low+high)/2;
if(num==a[mid])
{
printf("找到了");
}
else if(num>a[mid])
{
high=mid;
high=high+1;
}

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
void main()
{
int a[N],i,j,num,t,low=0,high=N,mid;
srand((unsigned)time(NULL));
for(i=0;i<N;i++)
{
a[i]=rand()%100+1;
}
for(i=0;i<N;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
printf("排列后!\n");
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<N;i++)
{
printf("%d\n",a[i]);
}
printf("请输入你想要查找的数字:");
scanf("%d",&num);
for(i=0;i<N;i++)
{
mid=(low+high)/2;
if(num==a[mid])
{
printf("找到了"); //后面+个break;
}
else if(num>a[mid])
{
high=mid; //改为 low=mid+1;
high=high+1; //去掉
}
else
{