给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始
要求使用折半查找算法
输入第一行输入n,表示队列有n个数据
第二行输入n个数据,都是正整数,用空格隔开
第三行输入t,表示有t个要查找的数值
第四行起,输入t个数值,输入t行
每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串error
样例输入8
11 22 33 44 55 66 77 88
3
22
88
99
样例输出2
8
error
#includeusing namespace std; int main() { int n; cin >> n; int* Arr = new int[n+1]; for (int i = 1;i <= n;i++) { cin >> Arr[i]; } int x; cin >> x; while (x--) { int num; cin >> num; int low = 1, high = n; int tag = 0; while (low <= high) { int mid = (low + high) / 2; if (num < Arr[mid]) high = mid - 1; else if (num > Arr[mid]) low = mid + 1; else if (num = Arr[mid]) { cout << mid << endl; tag = 1; break; } } if (!tag)cout << "error" << endl; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)