#include int main() { int a[15],b,c,i,k,n,d,f,p,s,e; printf("输入15个数:"); for(b=0;b<=14;b++) scanf("%d",&a[b]); for(i=0;i<14;i++) { k=i; for(n=i;n<=14;n++) if(a[k]
你写的粘贴格式不好看,根据你的要求写了一个折半查找,您可以对照看看
#include<stdio.h>
int BinSearch(int arr[],int len,int key) //折半查找法(二分法)
{
int low=0; //定义初始最小
int high=len-1; //定义初始最大
int mid; //定义中间值
while(low<=high)
{
//mid=(low+high)/2;//可能会溢出
mid=low+(high-low)/2; //找中间值
if(key==arr[mid]) //判断min与key是否相等
return mid;
else if(key>arr[mid]) //如果key>mid 则新区间为[mid+1,high]
low=mid+1;
else //如果key<mid 则新区间为[low,mid-1]
high=mid-1;
}
return -1; //如果数组中无目标值key,则返回 -1 ;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10,11}; //首先要对数组arr进行排序
printf("%d \n",BinSearch(arr,(sizeof(arr)/sizeof(arr[0])),7));
return 0;
}