用二分法判断某个值是否存在

#define  _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
int BinarySearch(int*a, int size, int x)
{
	int left = 0;
	int right = size - 1;
	int mid;
	while (left <= right)
	{
		mid = (left + (right - left) / 2);
		if (a[mid] < x)
			left = mid + 1;
		else if (a[mid] > x)
			right = mid - 1;//当left<right(即左闭右开),right=mid
		else
		{
			printf("找到了,下标为%d\n", mid);
			return mid;
		}
	}
	printf("找不到\n");
}
void main() {
	int a[5];
	int x;
	int m;
	int i;
	int size = sizeof(a) / sizeof(a[0]);
	for (i = 0; i < 5; i++)
	{
		scanf("%d", &a[i]);
	}
	printf("请输入要找的数字:\n");
	scanf("%d", &x);
	m = BinarySearch(a, size, x);//此处就是函数调用,调用函数中也已经打印了,所以下面也不需要再printf
	system("pause");
}

猜你喜欢

转载自blog.csdn.net/qq_44840046/article/details/89674051