#include<stdio.h>//折半查找法必须是有序数列
int main()
{
int a[10]={8,10,31,45,47,49,56,89,100,200};
int left,right,mid;
int num,flag;
int i;
printf("数组中的元素是:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("请输入你要查找的数:");
scanf("%d",&num);
left=0;
right=9;
flag=0;
for(i=0;i<10;i++)
if(a[i]==num)
flag=1;
while(left<right&&flag)
{
mid=(right+left)/2;
if(a[mid]>=num)
right=mid;
else
left=mid+1;
}
if(flag)
printf("查找成功,%d是数组中第%d个数.\n",num,left+1);
else
printf("查找失败,数组中没有数值%d.\n",num);
}
#include<stdio.h>
int main()
{
int a[10]={8,10,31,45,47,49,56,89,100,200};
int left,right,mid;
int num,flag;
int i;
printf("数组中的元素是:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("请输入你要查找的数:");
scanf("%d",&num);
left=0;
right=9;
flag=0;
while(left<=right&&!flag)
{
mid=(right+left)/2;
if(a[mid]==num)
flag=1;
else if(a[mid]<num)
left=mid+1;
else
right=mid-1;
}
if(flag)
printf("查找成功,%d是数组中第%d个数.\n",num,mid+1);
else
printf("查找失败,数组中没有数值%d.\n",num);
return 0;
}