阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√错误填X;除特殊说明外,判断题 1.5 分,选择题 4分,共计 40 分)
#include <cstdio>
using namespace std;
int n;
int a[100];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
int ans = 1;
for (int i = 1; i <= n; ++i) {
if (i > 1 && a[i] < a[i - 1])
ans = i;
while (ans < n && a[i] >= a[ans + 1])
++ans;
printf("%d\n", ans);
}
return 0;
}
判断题
(1 分)第 16 行输出 ans 时,ans 的值一定大于 i。()
(1 分)程序输出的 ans 小于等于 n。()
若将第 12 行的 < 改为 !=,程序输出的结果不会改变。()
当程序执行到第 16 行时,若 ans−i>2,则 a[i+1]≤a[i]。 ()
选择题
(3 分)若输入的 a 数组是一个严格单调递增的数列, 此程序的时间复杂度()
最坏情况下,此程序的时间复杂度是()。
O(logn)
O(n2)
O(nlogn)
O(n)
O(n2)
O(logn)
O(n)
O(n log n)