6809: NOIP初赛习题--算法
Description
1.[2020-5]冒泡排序算法的伪代码如下:
输入:数组L, n ≥ k。输出:按非递减顺序排序的 L。
算法 BubbleSort:
1. FLAG ← n //标记被交换的最后元素位置 2. while FLAG > 1 do 3・ k ← FLAG -1 4・ FLAG ← 1 5・ for j=1 to k do 6. if L(j) > L(j+1) then do 7・ L(j) ↔ L(j+1) 8・ FLAG ← j
对 n 个数用以上冒泡排序算法进行排序,最少需要比较多少次?( )。
A. n^2
B. n-2
C. n-1
D. n
2.[2020-6]设A是介个实数的数组,考虑下面的递归算法:
XYZ (A[1..n]) 1. if n = 1 then return A[1] 2. else temp ← XYZ (A[l..n-1]) 3. if temp < A[n] 4. then return temp 5. else return A[n]
请问算法XYZ的输出是什么?()。
A. A数组的平均
B. A数组的最小值
C. A数组的中值
D. A数组的最大值
3.[2019-5]设有100个已排好序的数据元素,采用折半查找时,最大比较次数为()
A. 7
B. 10
C. 6
D. 8
4.[2018-8]以下排序算法中,不需要进行关键字比较操作的算法是( )。
A. 基数排序
B. 冒泡排序
C. 堆排序
D. 直接插入排序
5.[2017-17]设 A 和 B 是两个长为 n 的有序数组,现在需要将 A 和 B 合并成一个排好序的数组,任何以元素比较作为基本运算的归并算法在最坏情况下至少要做( )次比较。
A. n2
B. n log n
C. 2n
D. 2n - 1
6.[2011-17]( )是一种选优搜索法,按选优条件向前搜索,以达到目标。当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。
A. 回溯法
B. 枚举法
C. 动态规划
D. 贪心
7.[2013-14]( )的 平均时间复杂度为 O(n log n),其中 n 是待排序的元素个数。
A. 快速排序
B. 插入排序
C. 冒泡排序
D. 基数排序
8.[2012-8]使用冒泡排序对序列进行升序排列,每执行一次交换操作系统将会减少1个逆序对,因此序列 5,4,3,2,1需要执行( )次操作,才能完成冒泡排序。
A. 0
B. 5
C. 10
D. 15
9.[2012-15]( )就是把一个复杂的问题分成两个或更多的相同类似的子问题,再把子问题分解成更小的子问题……直到最后的子问题可以简单地直接求解。而原问题的解就是子问题解的并。
A. 动态规划
B. 贪心
C. 分治
D. 搜索
10.[2011-12]在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指( )。
A. 程序运行时理论上所占的内存空间
B. 程序运行时理论上所占的数组空间
C. 程序运行时理论上所占的硬盘空间
D. 程序源文件理论上所占的硬盘空间