1.二分法
2.宏定义
3.条件编译
4.创建头文件
#include<stdio.h>
void Fun(int arr[],int a,int length)
{
int min=arr[0];
int max=arr[length-1];
int mid;
int i=1;
while(i<=length)
{
mid=(min+max)/2;
if(a>mid)
{
min=mid+1;
}else if(a<mid)
{
max=mid-1;
}else
{
printf("找到了%d\n",mid);
return;
}
i++;
}
printf("找不到%d\n\n",a);
}
int Fun1(int min,int max ,int mid,int a)
{
if(mid>max||mid<min)
{
printf("没找到");
return a;
}
if(a>mid)
{
min=mid+1;
return Fun1(min,max,(min+max)/2,a);
}else if(a<mid)
{
max=mid-1;
return Fun1(min,max,(min+max)/2,a);
}else
{
printf("找到了");
return mid;
}
}
int main()
{
int arr[100];
int i;
for(i=0;i<100;i++)
{
arr[i]=i+1;
}
int min=arr[0];
int max=arr[99];
int mid=(min+max)/2;
for(i=0;i<100;i++)
{
//Fun(arr,arr[i],100);
// printf("%d\n",Fun1(min,max,mid,arr[i]));
}
printf("%d\n",Fun1(min,max,mid,0));
}