#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

int main()
{  
	int arr[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
	int k = 0;
	int dgs = sizeof(arr) / sizeof(arr[0]);   
	//元素个数=总元素数量/单个元素
	int left = 0;    //左下标
	int right = dgs - 1;
	printf("输入一个数:\n");
	scanf("%d", &k);
	while (right >= left)
	{
		int mid = (left + right) / 2;
		if (arr[mid] > k)
			//假如k=4 arr[mid]得到6>4[6的底数为5],说明4在中间值mid的左边.并且六不等于四
			//所以排除六这个中间值,也就是得到right=mid-1;减去mid这个中间值
		{
			right = mid - 1;
			//左边元素=中间值-1.即[这个mid前面没有arr,所以他是个底数]
			//5-1=4,所以得到此数在底数0-4之间,然后进行下一次循环
		}
		else if (arr[mid] < k)
			//假如k=7 arr[mid]得到6<7[6的底数为5],说明7在中间值mid的右边.并且六不等于七
			//所以排除六这个中间值,也就是得到right=mid+1;这边也是减去mid这个中间值
		{
			left = mid + 1;

		}
		else
		{
			printf("你找到了,底数是%d\n", mid);
			break;
		}
	}
	if (left > right)
	{
		printf("没有找到对应的数\n");
	}
	return 0;
}