二分法查找数组中某个数并输出他的下标

思想

调用函数,先找中间那个数,然后与k比较,如果大于,则右下标-1,如果小于,则左下标+1;最后返回它的下标。

代码

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
int guess(int arr[], int k, int left, int right)
{
	
	while (left <= right)
	{
		int mid = left + (right - left) / 2;
		if (arr[mid] > k)
			right = mid - 1;
		else if (arr[mid] < k)
			left = mid + 1;
		else
			return mid;
	}
}
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int left = 0;
	int mid = 0;
	int k = 7;
	int right = sizeof(arr) / sizeof(arr[0]) - 1;
	int ret = guess(arr, k, left, right);
	if (ret == -1)
		printf("找不到");
	else
		printf("找到了,下标是%d\n", ret);
	system("pause");
	return 0;

}

运行结果

二分法查找数组中某个数并输出他的下标_第1张图片

你可能感兴趣的:(二分法查找数组中某个数并输出他的下标)