二分查找法问题#include<stdio.h>
#define N 15
int arr[N];
int sort(int a[],int size);
int func(int *a);
int func1(int *a);
int main()
{
int n;
scanf("%d",&n);
func(arr);
sort(arr,N);
if(func1(arr)==0)
printf("no found");
else
printf("该数是数组中的第%d个元素",func1(arr));
}
int func(int *a)
{
int i,j;
for(i=0;i<N-1;i++)
{
scanf("%d",&j);
*(arr+i)=j;
}
}
int sort(int a[],int size)//排序
{
int i,j,t;
for(i=1;i<=N;i++)
{
for(j=0;j<N;j++)
{
if(arr[j]>arr[j+1])
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
}
int func1(int *a)//查找n是数字中的第几个数字(二分查找法)
{
int low,high,mid,n;
scanf("%d",&n);
low=0;
high=N;
while(high>=low)
{
mid=(high+low)/2;
if(n<a[mid])
high=mid+1;
else if(n>a[mid])
low=mid-1;
else
return mid;
}
return 0;
}
15个数为1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
用二分查找法当n为1,14 ,15时 运行超时
应该如何更改代码