折半查找、

描述

给定一个已按从大到小排序好的数组和一个数,使用折半查找算法,输出该数在数组中的位置。如果该数不在数组中,则输出“无此数”。

输入

输入为两行,第一行包含多个整数,用空格分隔,表示已排序好的数组;第二行为需要查找的数。

输出

输出一个整数,表示需要查找的数在数组中的位置。如果该数不在数组中,则输出“无此数”。

输入样例 1 

15 13 12 10 9 8 7 6 5 4 3 2 1 0 -1
8

输出样例 1

6

输入样例 2 

29 27 23 22 21 16 14 13 11 8 6 4 3 0 -2
0

输出样例 2

14

输入样例 3 

10 9 8 7 6 5 4 3 2 1
-1

输出样例 3

无此数
#include 
using namespace std;
int main()
{
	int number[20],i;
	char c;
	for (i = 1; i < 20; i++)
	{
		cin >> number[i];
		c = getchar();
		if (c == '\n')break;
	}
	int key;
	cin >> key;
	int left=1, high=i, mid=(left+high)/2;
	while (left <= high)
	{
		if (number[mid] == key)
		{
			cout << mid; break;
		}
		else if (number[mid] < key)
		{
			high = mid - 1;
			mid = (high + left) / 2;
		}
		else
		{
			left = mid + 1;
			mid = (high + left) / 2;
		}
	}
	if (number[mid] != key)cout << "无此数";
	return 0;
}

你可能感兴趣的:(ACM作业,c++)