1 条题解

发布要求:学生须先通过本题;教师和管理员可直接维护官方内容。内容应说明核心思路、关键步骤、正确性理由和复杂度。 只粘贴代码不会通过审核。

你尚未通过该题,通过后才能发布题解。

  • 0
    @ 1983-12-31 14:42:53 官方题解 源题同步

    01|2025-03-L5-SC-09

    学生训练答案:A

    原卷事实

    题目比较四种排序的稳定性。

    必要假设

    按教材中的标准实现。

    C++11 / 算法语义

    选择排序交换最小元素时可能改变相等元素的相对次序。

    命题预期

    选择A。

    推导结论

    训练答案A。

    02|2025-03-L5-TF-10

    学生训练答案:T

    原卷事实

    题面描述分割、递归排序和合并三个阶段。

    必要假设

    按标准归并排序。

    C++11 / 算法语义

    该过程正是分治:分解为两个近等规模子问题,递归解决后线性合并。

    命题预期

    判断为真。

    推导结论

    训练答案T。

    03|2025-06-L5-TF-05

    学生训练答案:T

    原卷事实

    题目比较归并排序三类输入的时间复杂度。

    必要假设

    按标准归并排序实现。

    C++11 / 算法语义

    递归层数O(log n),每层合并总工作O(n),三者均为O(n log n)。

    命题预期

    判断为真。

    推导结论

    学生训练答案T。

    04|2025-06-L5-TF-08

    学生训练答案:F

    原卷事实

    题面从分解和合并开销推出分治通常更慢。

    必要假设

    未限定具体问题和直接算法。

    C++11 / 算法语义

    分治常用于降低复杂度,如归并排序和二分查找;不能仅凭有拆分合并步骤推断通常更低效。

    命题预期

    判断为假。

    推导结论

    学生训练答案F。

    05|2025-12-L5-SC-08

    学生训练答案:B

    原卷事实

    题目比较常见排序性质。

    必要假设

    采用标准实现。

    C++11 / 算法语义

    快速排序通常不稳定;归并可稳定;插入稳定;冒泡原地。

    命题预期

    选择B。

    推导结论

    训练答案B。

    06|2026-03-L5-TF-03

    学生训练答案:F

    原卷事实

    题面把枢轴位置与稳定性直接关联。

    必要假设

    采用普通交换式快速排序。

    C++11 / 算法语义

    稳定性取决于分区时是否保持相等键相对次序,选中间元素不能保证。

    命题预期

    判断为假。

    推导结论

    训练答案F。

    07|2026-03-L5-SC-14

    学生训练答案:B

    原卷事实

    题目比较标准排序性质。

    必要假设

    冒泡含提前终止优化;归并时相等元素优先取左侧。

    C++11 / 算法语义

    归并排序通常稳定,因此B错误。

    命题预期

    选择B。

    推导结论

    训练答案B。

    08|2025-03-L5-TF-06

    学生训练答案:F

    原卷事实

    题面断言快速排序不受输入影响且始终O(n log n)。

    必要假设

    未限定随机化或三数取中等枢轴策略。

    C++11 / 算法语义

    普通快速排序平均O(n log n),最坏可退化为O(n²),输入和枢轴选择会影响。

    命题预期

    判断为假。

    推导结论

    训练答案F。

    09|2025-03-L5-TF-07

    学生训练答案:T

    原卷事实

    题面讨论标准归并排序的运行时间。

    必要假设

    按每层线性合并的标准实现。

    C++11 / 算法语义

    递归深度为O(log n),每层总合并工作O(n),输入初始有序性不改变该界。

    命题预期

    判断为真。

    推导结论

    训练答案T。

    10|2025-06-L5-TF-04

    学生训练答案:F

    原卷事实

    每个非基例mergeSort调用在两次递归后输出HERE并调用merge。

    必要假设

    调用入口覆盖至少两个元素。

    C++11 / 算法语义

    merge会在递归树的每个内部结点调用,不止一次,HERE也输出多次。

    命题预期

    判断为假。

    推导结论

    学生训练答案F。

    11|2025-09-L5-TF-07

    学生训练答案:F

    原卷事实

    题目对两种排序都断言稳定。

    必要假设

    按教材标准实现。

    C++11 / 算法语义

    归并排序可稳定,普通快速排序不稳定。

    命题预期

    判断为F。

    推导结论

    训练答案F。

    12|2025-12-L5-TF-06

    学生训练答案:T

    原卷事实

    题面描述三数取中枢轴。

    必要假设

    相对固定取首元素的普通输入分布讨论概率。

    C++11 / 算法语义

    三数取中可减少极端枢轴出现机会,但不消除最坏情况。

    命题预期

    “可降低概率”成立。

    推导结论

    训练答案T。

    13|2025-12-L5-SC-09

    学生训练答案:C

    原卷事实

    代码为标准数组归并排序。

    必要假设

    temp数组长度足够。

    C++11 / 算法语义

    平均和最坏时间均O(n log n),额外空间O(n)。

    命题预期

    C错误。

    推导结论

    训练答案C。

    14|2025-12-L5-SC-10

    学生训练答案:C

    原卷事实

    代码以首元素为枢轴。

    必要假设

    输入可使每次划分极不平衡。

    C++11 / 算法语义

    递推可退化为T(n)=T(n-1)+O(n),故O(n²)。

    命题预期

    选择C。

    推导结论

    训练答案C。

    15|2026-03-L5-SC-12

    学生训练答案:B

    原卷事实

    两个输入数组均升序。

    必要假设

    索引有效且result初始为空。

    C++11 / 算法语义

    应先放两当前元素中较小者;相等时取A也保持有序与稳定。

    命题预期

    选择B。

    推导结论

    训练答案B。

    16|2026-03-L5-SC-13

    学生训练答案:C

    原卷事实

    数组已升序且每次取首元素为枢轴。

    必要假设

    比较与交换按给定实现。

    C++11 / 算法语义

    每次划分极不平衡,递推为T(n)=T(n-1)+O(n)。

    命题预期

    选择C。

    推导结论

    训练答案C。

    17|2026-06-L5-TF-04

    学生训练答案:T

    原卷事实

    代码复制两段并以双指针写回。

    必要假设

    L、R分别已排序且边界合法。

    C++11 / 算法语义

    主循环选较小元素,随后复制剩余元素。

    命题预期

    判断为T。

    推导结论

    训练答案T。

    18|2026-06-L5-TF-05

    学生训练答案:T

    原卷事实

    题目描述分治法的一般步骤。

    必要假设

    子问题可递归求解。

    C++11 / 算法语义

    分解、解决、合并是分治的基本结构。

    命题预期

    判断为T。

    推导结论

    训练答案T。

    19|2026-06-L5-SC-07

    学生训练答案:C

    原卷事实

    代码把指数规模减半。

    必要假设

    n为非负整数且乘法结果可表示。

    C++11 / 算法语义

    xⁿ由x^(n/2)平方并按奇偶补乘x。

    命题预期

    选项C。

    推导结论

    训练答案C。

    20|2026-06-L5-TF-10

    学生训练答案:F

    原卷事实

    前半句给出平均复杂度,后半句交换了典型稳定性。

    必要假设

    按常见实现。

    C++11 / 算法语义

    归并排序通常稳定,快速排序通常不稳定,因此整句错误。

    命题预期

    判断为F。

    推导结论

    训练答案F。

    21|2026-06-L5-SC-11

    学生训练答案:B

    原卷事实

    双指针相遇于基准最终位置i。

    必要假设

    区间与下标有效。

    C++11 / 算法语义

    将首元素基准与arr[i]交换。

    命题预期

    选项B。

    推导结论

    训练答案B。

    22|2026-06-L5-SC-12

    学生训练答案:B

    原卷事实

    题目询问归并排序核心过程。

    必要假设

    按标准归并排序。

    C++11 / 算法语义

    递归排序两半并合并有序部分。

    命题预期

    选项B。

    推导结论

    训练答案B。

    23|2025-03-L5-SC-10

    学生训练答案:B

    原卷事实

    pivot取arr[high],i维护小于pivot区间的末端。

    必要假设

    采用Lomuto划分并按从小到大排序。

    C++11 / 算法语义

    遇到arr[j] < pivot时先递增i,再交换arr[i]与arr[j]。

    命题预期

    选择B。

    推导结论

    训练答案B。

    24|2025-03-L5-SC-14

    学生训练答案:D

    原卷事实

    目标是在闭区间[low,high]求最大值。

    必要假设

    输入区间非空。

    C++11 / 算法语义

    正确分治需以low==high为基例,把区间拆为[low,mid]和[mid+1,high],再取两侧最大值。

    命题预期

    只有D同时满足基例、完整分割和max合并。

    推导结论

    训练答案D。

    25|2025-06-L5-SC-14

    学生训练答案:D

    原卷事实

    官方A把i说成大于基准值边界,官方B使用绝对化“避免”,官方答案D。

    必要假设

    学生版只收窄A、B措辞,不改代码、C、D或答案。

    C++11 / 算法语义

    源码中i是<=pivot区间右边界;随机枢轴只降低而非消除最坏O(n²)概率;快速排序平均O(n log n)且通常不稳定。

    命题预期

    命题预期D,原卷A也错误造成多解。

    推导结论

    用户批准学生版把A改为正确边界描述、B改为概率表述,使D成为唯一错误;学生答案D。

    26|2025-09-L5-SC-12

    学生训练答案:D

    原卷事实

    左右子数组均是闭区间。

    必要假设

    下标范围合法。

    C++11 / 算法语义

    主循环后需复制右区间剩余元素,条件为j<=right。

    命题预期

    选择D。

    推导结论

    训练答案D。

    27|2025-09-L5-SC-14

    学生训练答案:B

    原卷事实

    代码递归求左、右和跨中点三类最大和。

    必要假设

    数组非空,区间合法。

    C++11 / 算法语义

    递推式T(n)=2T(n/2)+O(n),复杂度O(n log n),属分治递归而非贪心。

    命题预期

    错误项B。

    推导结论

    训练答案B。

    28|2026-03-L5-TF-05

    学生训练答案:F

    原卷事实

    代码只比较两个区间并累加cnt。

    必要假设

    即使左右半段预先有序,该函数也未实际归并;更未递归统计左右内部逆序对。

    C++11 / 算法语义

    它不能单独正确统计整个[l,r]逆序对总数。

    命题预期

    判断为假。

    推导结论

    训练答案F。

    29|2026-03-L5-SC-11

    学生训练答案:B

    原卷事实

    每层递归求左右子问题并线性扫描跨中点和。

    必要假设

    数组区间非空且求和不溢出int。

    C++11 / 算法语义

    T(n)=2T(n/2)+O(n)=O(n log n)。

    命题预期

    选择B。

    推导结论

    训练答案B。

    30|2026-06-L5-SC-13

    学生训练答案:A

    原卷事实

    每个非叶递归结点调用一次mergeArray。

    必要假设

    n>=1。

    C++11 / 算法语义

    二叉递归树有n个叶结点、n-1个内部结点。

    命题预期

    选项A。

    推导结论

    训练答案A。

    31|2025-09-L5-SC-11

    学生训练答案:D

    原卷事实

    代码用首元素作pivot并先从右扫描。

    必要假设

    按给定划分逻辑判断。

    C++11 / 算法语义

    若先从左扫,如[0,1]可将pivot错换到右侧并导致排序错误,因此顺序不可直接交换。

    命题预期

    错误项D。

    推导结论

    训练答案D。

    • 1

    信息

    ID
    80
    时间
    1000ms
    内存
    256MiB
    难度
    轻松上手
    标签
    递交数
    0
    已通过
    0
    上传者