插入排序M趟遍历后有序元素数为何是M而非M+1?
插入排序趟数计数歧义说明
你对插入排序的过程推演完全正确,被判错的核心原因是你和出题人对「趟(pass)」的计数基准定义不一致:
- 你采用的是国内主流的
n-1趟计数规则:
初始状态下数组的首个元素天然为有序区间(长度为1,不计入趟数统计),每完成1趟迭代就将1个未排序元素插入有序区间,因此M趟后有序元素总数为M+1,你的逆序数组推演完全符合该规则。 - 出题人采用的是部分教材的
n趟计数规则:
初始状态不预设有序区间,将处理第1个元素的操作算作第1趟(即使该操作不需要任何交换调整),第M趟结束后恰好完成前M个元素的插入排序,因此有序元素总数为M,与题目给出的标准答案描述一致。
这类题干如果没有提前明确趟数的计数规则,本身就存在表述歧义,你的逻辑推导没有问题。
内容的提问来源于stack exchange,提问作者Ferrece
相关产品推荐
相关产品推荐

