vc折半查找法程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 23:44:05
谁能帮我看看一下这个程序为什么输入一个已有数却显示没有呢?

#include"stdio.h"
#include"stdlib.h"
#include"time.h"

void main()
{
int i,j,temp,high,mid,low,flag,q;
int data[10];

srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
data[i]=rand()%100;
}
printf("排序前的数组为:");
for(i=0;i<10;i++)
printf("%4d",data[i]);
printf("\n");
for(i=0;i<10;i++)
{
for(j=0;j<9-i;j++)
{
if(data[j]<data[j+1])
{
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
printf("排序后的数组为:");
for(i=0;i<10;i++)
printf("%4d",data[i]);
high=9;
low=0;
flag=-1;
printf("\n");

printf("请输入您要查询的数:");
scanf("%d",&q);
//*以下是折中查找算法,问题就在下面*//
while(high>=l

if(flag=-1) 这个会一直显示“没有这个数”
应该是
if(flag==-1)

-------------------------排序和查找的顺序反了
//*以下是折中查找算法,问题就在下面*//
while(high>=low)
{
mid=(high+low)/2;
if(q>data[mid])
high=mid-1;
else
if(q<data[mid])
low=mid+1;
else
{
flag=mid;
break;
}
}