二分查找(c语言实现)

题目:从键盘输入一个整数,,用折半查找法找出该数在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版权协议,转载请附上原文出处链接和本声明。