有15个数按从小到大顺序存放在一个数组中,输入一个数,输出一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。

有15个数按从小到大顺序存放在一个数组中,输入一个数,输出一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。

#include <stdio.h>
#include <stdlib.h>


void cal(int a[], int len,int n)
{
	int low = 0;
	int high = len;
	int mid = 0;
	mid = low + (mid - low) / 2;
	while (low != high)
	{
		if (a[mid] < n)
		{
			low = mid + 1;
			mid = low + (mid - low) / 2;
		}
		else if (a[mid] > n)
		{
			high = mid - 1;
			mid = low + (mid - low) / 2;
		}
		else
		{
			printf("mid = %d", mid);
			break;
		}
	}
	printf("无此数\n");
	
}

int main()
{
	
	int a[15] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
	int n;
	scanf("%d", &n);
	cal(a, sizeof(a) / sizeof(a[0]),n);
	system("pause");
	return 0;
}

答案
有15个数按从小到大顺序存放在一个数组中,输入一个数,输出一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页