【C语言基础】写代码可以在整型有序数组中查找想要的数字(while循环,if条件语句)

要求:写代码可以在整型有序数组中查找想要的数字,找到了打印“找到了”并返回下标,找不到打印“找不到”。

代码如下:

 
 
#include<stdio.h>
#include<stdlib.h>
int main ()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	int k = 7;
	int left = 0;        //左下标
	int right = sizeof(arr)/sizeof (arr[0])-1;      //右下标
	while(left <= right)          //当左下标小于等于右下标的时候,可以进入while循环进行查找
	{
	  int mid = left+(right-left)/2;        //我们所想要找的中间数的下标
	  if(arr[mid] == k)         // 如果找的中间值是我们所期望的7,则找到了,并且打印出这个中间值的下标
	  {
		printf("找到了:%d\n",mid);
		break;
	  }
	  else if(arr[mid]>k)       // 如果找到的中间值大于我们要找的数字7;
	  {
		right = mid - 1;        //重新定义一个右下标(中间值往左推一位,缩小范围);
	  }
	  else      // 如果找的中间值小于要找的数字;
	  {
		left = mid + 1;       //就重新定义一个左下标(中间值向右走一步,成为新定义的左下标,靠近所找的数,同样是缩小范围);
	  }
	}
	if(left>right )
       printf("找不到\n");
	system("pause");
	return 0;
}

根据代码,运行结果为:
返回所找数的下标。

如果为k重新赋值为13(数组元素之外),则运行结果为:


猜你喜欢

转载自blog.csdn.net/qq_41420688/article/details/79746353