100 #2008. 初赛营3_算法基础

初赛营3_算法基础

  1. 以下排序算法中,( )的时间复杂度为 O(n log n),其中 n 是待排序的元素个数? {{ select(1) }}
  • 冒泡排序
  • 插入排序
  • 归并排序
  • 选择排序
  1. 已知 2022 年 10 月 1 日是星期六,则 1997 年 10 月 1 日是星期几? {{ select(2) }}
  • 星期二
  • 星期三
  • 星期五
  • 星期六
  1. 有一台计算机使用选择排序对200个数字排序花了100ms,如果花费400ms,大概能对多少个数字进行排序? {{ select(3) }}
  • 400
  • 800
  • 1600
  • 3200
  1. 下列代码段对应的输出结果是?
int cnt = 0, a[5] = {5, 3, 2, 4, 1};
for (int i = 1; i < 5; i++) {
    for (int j = 0; j < 5-i; j++) {
        if (a[j] > a[j+1]) {
            cnt++;
            int t = a[j];
            a[j] = a[j+1];
            a[j+1] = t;
        }
    }
}
cout << cnt;

{{ select(4) }}

  • 4
  • 6
  • 8
  • 10
  1. 禾木有 5 枚相同的 1 元硬币, 2 枚相同的 2 元硬币,3 枚相同的 5 元硬币,他要用这些硬币凑够恰好 10 元,一共有多少种不同的方案? {{ select(5) }}
  • 2
  • 3
  • 4
  • 5
  1. 小猴子每天吃一半多2根香蕉,吃了5天后发现还剩下3根香蕉,则5天前有( )根香蕉? {{ select(6) }}
  • 108
  • 110
  • 216
  • 220
  1. 禾木要从地面上走到第10级台阶,每一步,禾木可以向上跨1级、2级或3级台阶,则禾木从地面上跨到10级台阶上一共有( )种不同的方案? {{ select(7) }}
  • 149
  • 274
  • 432
  • 504
  1. 若采用二分查找算法在一个顺序表中查找到元素33时一共比较了5次,则该顺序表中的元素至少有( )个 {{ select(8) }}
  • 16
  • 17
  • 31
  • 32
  1. 下列程序段的输出结果是( )?
int a[10] = {1, 4, 5, 8, 9, 11, 13, 18, 22, 37}, x = 20;
int l = 0, r = 9;
while (l < r) {
    int mid = (l + r + 1) / 2;
    if (a[mid] * a[mid] <= x)
        l = mid;
    else
        r = mid-1;
}
cout << a[l];

{{ select(9) }}

  • 4
  • 8
  • 9
  • 18
  1. 已知一个图的DFS序为 a, b, c, d, e, f,则下列说法中正确的是? {{ select(10) }}
  • 存在一条边连接顶点 a 和 b
  • 存在一条边连接顶点 b 和 c
  • 存在一条边连接顶点 c 和 d
  • 不存在一条连接顶点 b 和 d 的边