NOIP 普及组初赛 · NOIP 2008 普及组初赛试题 第 14 题

选择题 · 答案 B · 考点:排序基础

← 整套速查表 NOIP 普及组初赛 全部真题

题目

将数组 $\{8, 23, 4, 16, 77, -5, 53, 100\}$ 中的元素按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换( )次。

答案:B

考点

排序基础

解题思维

这题考的是置换环分解。拿到题先别急着排,把目标序列画出来,看每个数当前在哪、该去哪,连线找环,环数减一就是最少交换次数。

常见错误

最容易错在把交换次数想成 n-1,或者数错环的数量。比如把两个环当成一个,或者漏掉长度为1的不动点环。记住:每个环内部只需k-1次交换,环与环之间互不干扰,总次数就是所有环的(k-1)之和,也就是n减去环的个数。

详细解析(节选)

考点与概念

这道题考查的是置换环分解在排序中的应用。核心结论很简单:要把一个排列变成目标顺序,最少交换次数 = 元素总数 n − 环的个数。

命题视角:为什么考这个?

命题人爱在“看似要全排”的题目里挖一个数学模型。它不考具体算法实现,只考你对“交换操作本质”的理解:每次交换最多把一个环拆成两个,或者把两个环合并成一个。所以最优策略就是每个环内部用 k−1 次交换搞定,环与环之间互不干扰。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断