描述
给定一个已按从大到小排序好的数组和一个数,使用折半查找算法,输出该数在数组中的位置。如果该数不在数组中,则输出“无此数”。
输入
输入为两行,第一行包含多个整数,用空格分隔,表示已排序好的数组;第二行为需要查找的数。
输出
输出一个整数,表示需要查找的数在数组中的位置。如果该数不在数组中,则输出“无此数”。
输入样例 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 文章来源:https://www.toymoban.com/news/detail-635043.html
10 9 8 7 6 5 4 3 2 1 -1
输出样例 3文章来源地址https://www.toymoban.com/news/detail-635043.html
无此数
#include <iostream>
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;
}
到了这里,关于折半查找、的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!