#6580. 【客观题】2.2基础算法考察

【客观题】2.2基础算法考察

一、单项选择题(共 25 题,每题 2.5 分,共计 62.5 分;每题有且仅有一个正确选项)

  1. 下列排序算法中,属于稳定排序的是( )。 {{ select(1) }}
  • 直接插入排序
  • 快速排序
  • 简单选择排序
  • 堆排序
  1. 内排序与外排序的核心区别是( )。 {{ select(2) }}
  • 排序算法的时间复杂度不同
  • 排序过程中是否需要访问外存
  • 排序算法的稳定性不同
  • 排序时是否需要进行元素比较
  1. 对n个元素进行快速排序,最坏情况下的时间复杂度为( )。 {{ select(3) }}
  • O(n)
  • O(n log n)
  • O(n²)
  • O(log n)
  1. 下列排序算法中,属于非比较类排序的是( )。 {{ select(4) }}
  • 冒泡排序
  • 基数排序
  • 希尔排序
  • 归并排序
  1. 衡量内排序算法效率的核心指标是( )。 {{ select(5) }}
  • 算法的代码长度
  • 排序过程中的元素比较次数
  • 排序过程中的内存占用峰值
  • 算法的输入输出次数
  1. 下列排序算法中,平均时间复杂度为O(n log n)且具备稳定性的是( )。 {{ select(6) }}
  • 归并排序
  • 快速排序
  • 堆排序
  • 简单选择排序
  1. 若需要对1000万条超大数据记录排序,计算机内存无法一次性容纳全部数据,应采用的排序方式是( )。 {{ select(7) }}
  • 快速排序
  • 内排序
  • 外排序
  • 希尔排序
  1. 下列关于排序稳定性的说法,正确的是( )。 {{ select(8) }}
  • 排序前后相同元素的相对位置不变,称该排序算法稳定
  • 时间复杂度更低的排序算法一定是稳定排序
  • 不稳定的排序算法没有实际应用价值
  • 所有基于比较的排序算法都是稳定的
  1. 快速排序算法在平均情况下的空间复杂度为( )。 {{ select(9) }}
  • O(1)
  • O(log n)
  • O(n)
  • O(n log n)
  1. 对基本有序的数组进行排序,下列算法中效率最高的是( )。 {{ select(10) }}
  • 直接插入排序
  • 快速排序
  • 堆排序
  • 简单选择排序
  1. 二分查找算法能够正常执行并得到正确结果的前提条件是( )。 {{ select(11) }}
  • 数组元素数量不超过1000
  • 数组元素为整型
  • 数组元素有序
  • 数组元素无重复值
  1. 二分查找算法在最坏情况下的时间复杂度为( )。 {{ select(12) }}
  • O(n)
  • O(n log n)
  • O(log n)
  • O(1)
  1. 下列关于贪心算法的说法,正确的是( )。 {{ select(13) }}
  • 贪心算法总能得到问题的全局最优解
  • 贪心算法要求问题具备贪心选择性质和最优子结构
  • 贪心算法的时间复杂度一定高于动态规划算法
  • 贪心算法需要回溯所有可能的情况来寻找最优解
  1. 要快速处理数组的区间和查询,最适合使用的基础算法是( )。 {{ select(14) }}
  • 枚举算法
  • 前缀和算法
  • 贪心算法
  • 深度优先搜索
  1. 下列位运算操作中,能够快速判断整数n为奇数的是( )。 {{ select(15) }}
  • n & 1 == 1
  • n | 1 == 1
  • n ^ 1 == 1
  • n >> 1 == 1
  1. 枚举算法的核心特点是( )。 {{ select(16) }}
  • 逐一列举问题所有可能的解,逐一验证得到正确结果
  • 仅通过一次遍历就能得到问题的最优解
  • 时间复杂度固定为O(log n)
  • 适用于数据规模极大的问题场景
  1. 下列关于差分算法的说法,正确的是( )。 {{ select(17) }}
  • 差分算法可以快速处理数组的区间修改操作
  • 差分算法的核心是快速计算数组的前缀和
  • 差分算法无法处理一维数组,仅适用于二维数组
  • 差分算法的时间复杂度为O(n²)
  1. 下列基础算法中,适用于求解“最优装载问题”“活动选择问题”的是( )。 {{ select(18) }}
  • 贪心算法
  • 枚举算法
  • 前缀和算法
  • 差分算法
  1. C风格字符串的结束标志是( )。 {{ select(19) }}
  • '\n'
  • '\0'
  • 空格
  • 逗号
  1. 已知大写字母'A'的十进制ASCII码为65,字符'0'的十进制ASCII码为48,则表达式'A' + 5的结果是( )。 {{ select(20) }}
  • 70
  • 'F'
  • 5
  • '5'
  1. C语言中,用于计算C风格字符串长度的库函数是( )。 {{ select(21) }}
  • strcpy
  • strcmp
  • strlen
  • strcat
  1. 下列关于C++ string类的说法,错误的是( )。 {{ select(22) }}
  • 可以直接通过+运算符完成字符串拼接
  • 提供size()成员函数获取字符串长度
  • 无需手动处理字符串末尾的'\0'结束符
  • 无法通过下标访问字符串中的单个字符
  1. 定义字符数组char s[10] = "hello";,该数组占用的内存字节数是( )。 {{ select(23) }}
  • 5
  • 6
  • 10
  • 9
  1. C语言中,用于比较两个C风格字符串大小的库函数是( )。 {{ select(24) }}
  • strcmp
  • strcpy
  • strlen
  • strcat
  1. 已知字符'a'的十进制ASCII码为97,字符'z'的十进制ASCII码为122,则表达式'z' - 'a'的结果是( )。 {{ select(25) }}
  • 25
  • 26
  • -25
  • '25'

二、判断题(共 15 题,每题 2.5 分,共计 37.5 分;判断下列说法的正误,每题有且仅有一个正确选项)

  1. 冒泡排序是稳定排序算法,简单选择排序是不稳定排序算法。( ) {{ select(26) }}
  • 正确
  • 错误
  1. 归并排序的平均、最好、最坏时间复杂度均为O(n log n)。( ) {{ select(27) }}
  • 正确
  • 错误
  1. 衡量外排序算法效率的核心指标是排序过程中的IO读写次数,而非元素比较次数。( ) {{ select(28) }}
  • 正确
  • 错误
  1. 堆排序是稳定排序算法,其空间复杂度为O(1)。( ) {{ select(29) }}
  • 正确
  • 错误
  1. 基数排序不需要进行元素之间的大小比较,其排序效率与数据范围相关。( ) {{ select(30) }}
  • 正确
  • 错误
  1. 二分查找算法可以在无序数组中执行,只是查找效率会降低。( ) {{ select(31) }}
  • 正确
  • 错误
  1. 贪心算法只要每一步选择局部最优解,最终一定能得到全局最优解。( ) {{ select(32) }}
  • 正确
  • 错误
  1. 前缀和算法可以快速处理数组的区间和查询,但单点修改的效率较低。( ) {{ select(33) }}
  • 正确
  • 错误
  1. 对一个整数进行左移一位的位运算,等价于将该整数乘以2。( ) {{ select(34) }}
  • 正确
  • 错误
  1. 枚举算法的时间复杂度通常较高,仅适用于数据规模较小的问题场景。( ) {{ select(35) }}
  • 正确
  • 错误
  1. C风格字符串的strlen函数计算长度时,会包含末尾的'\0'结束符。( ) {{ select(36) }}
  • 正确
  • 错误
  1. C++的string类可以自动管理内存,无需开发者手动分配和释放内存空间。( ) {{ select(37) }}
  • 正确
  • 错误
  1. 两个字符进行大小比较时,本质上是比较二者对应的ASCII码值的大小。( ) {{ select(38) }}
  • 正确
  • 错误
  1. strcmp函数比较两个字符串时,若两个字符串完全相同,返回值为1。( ) {{ select(39) }}
  • 正确
  • 错误
  1. 数字字符'9'减去字符'0',得到的结果是整数9。( ) {{ select(40) }}
  • 正确
  • 错误