关于二分法对数据的查找
int search(int arr[],int key,int n){ int mid,low=0,high=n-1;
while(low<=high)
{ mid=(low+high)/2;
if(arr[mid]==key)
{ printf("suo cha zhao de zhi zai shu zu d di %d wei,zhi wei %d",mid+1,key);
return;
}
if(arr[mid]>key)
{ high=mid-1;
}
else
{low =mid+1;}
}
}
main()
{ int a[100];
int i,n;
int key;
printf("n=");
scanf ("%d\n",&n);
printf("shu ru shu zu a li de yuan su:");
for(i=0;i<n;i++)
scanf("%d",a[i]);
printf("\n");
printf("the number of key is:");
scanf("%d",&key);
search(a,key,n);
getch();
}
我在win tc上编写了用二分法查找一个数据的以上程序,我假设数组a里的元素是按升序排列的,即先不考虑数组元素的排序问题。
程序可以编译成功,但运行结果出了问题,如图,如果我选定n=10,输入数字10之后,就再没有反应了= =,不知道哪里出了错,请各位指点Σ( ° △ °|||)︴,谢了!