作者在 2013-01-01 13:56:38 发布以下内容
//用二分法查找数组中元素
#include<stdio.h>
#include<stdlib.h>
#define N 15
int main()
{
int arr[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int low=0; //记录下标
int high=N-1;
int middle;
int value; //需要查找的数
int flag;
printf("输入要查找数据:");
scanf("%d",&value);
if(value<arr[0]&&value>arr[N-1])
printf("输入的数据非法\n");
else
while(low<=high)
{
middle=(low+high)/2;
if(arr[middle]<value) //左侧数据去掉
low=middle+1;
else if(arr[middle]==value)
{
flag=middle;
break;
}
else if(arr[middle]>value) //右侧去掉
high=middle-1;
else
flag=-1;
}
if(flag==-1)
printf("没有找到要找的数据\n");
else
printf("要找的数据是arr[%d]=%d\n",flag,arr[flag]);
return 0;
}