题目:从键盘输入一个整数,,用折半查找法找出该数在10个有序整型数组a中的位置。若该数不在a中,则打印出相应信息。试编程。
分析:问题的突破点在于循环在什么时候终止,带入几个特定的值可以发现,要不找到这个值循环终止,要不全部找完了还没找到就终止。
代码如下:
#include <stdio.h>
int halfSearch(int a[],int target){
int start = 0,end = 9; //数组的开头和末尾
while(start<=end) //循环的条件是开头下标小于等于末尾的小标,理解并牢记
{
int mid = (start+end)/2; //中间的索引
if(a[mid] == target)
return mid;
else if(a[mid] > target)
{
end = mid - 1;
}
else{
start = mid + 1;
}
}
}
int main(){
int a[10] = {0,1,2,3,4,5,6,7,8,9},target;
scanf("%d",&target);
printf("%d",halfSearch(a,target));
}
运行结果:
版权声明:本文为huihuisd原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。