我这折半法没用啊求帮忙看看

#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;
}


​