C语言折半查找——代码于思考

最近学习c语言,基本算法折半查找,思考了一阵才弄明白,直接贴代码


#include  <stdio.h>
void main(){
int check,i,start,end,mid;
int a[10];
printf("请按从小到大顺序输入10个数字\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]); } 
printf("请输入的数字是\n"); 
for(i=0;i<10;i++) { 
printf("%d ",a[i]); 
} 
printf("请输入需要查找的数字\n"); 
scanf("%d",&check); 
start=0; end=9; 
while(start<=end) { 
mid=(end+start)/2; 
if(a[mid]<check) { start=mid+1; } 
if(a[mid]>check) { end=mid-1; } 
if(a[mid]==check) { printf("找到了,位置是%d",mid); break; } } }

代码就是这样,主要是什么时候停止循环思考了一下,如果不停止就成了一个死循环,后来发现折半后开始位置应该减一,

相对应的结束位置就应该加一,这样停止循环的问题也就解决了,多思考多动手


打赏

C语言折半查找——代码于思考:等您坐沙发呢!

发表评论