给定数组A=[12,6,5,8,10,3,8,2],求选择排序主/外循环前三次迭代后的列表状态
选择排序指定迭代结果校验
基础认知校验
- 升序实现的选择排序核心逻辑:每轮外循环从未排序区间里找出最小值,将其和未排序区间起始位置的元素交换,逐轮缩小未排序的范围,直到未排序区间只剩1个元素时,整个列表就完成全排序了。
- 此前“外循环执行完毕后列表完成全排序”的认知是正确的。此前自填的全排序结果存在输入笔误:
[2,3,5,6,,8,8,10,12]在6和8之间多写了一个空逗号,修正后的全排序正确结果为[2, 3, 5, 6, 8, 8, 10, 12]。
前三次外循环迭代后的列表状态
给定初始列表为 A = [12,6,5,8,10,3,8,2],逐轮算下来的迭代结果如下:
- 第1次外循环完成:未排序区间覆盖整个列表,找到区间最小值2(原索引7位置),和区间起点(索引0位置)的12交换,得到列表
[2, 6, 5, 8, 10, 3, 8, 12] - 第2次外循环完成:未排序区间为索引1到列表末尾,找到区间最小值3(原索引5位置),和区间起点(索引1位置)的6交换,得到列表
[2, 3, 5, 8, 10, 6, 8, 12] - 第3次外循环完成:未排序区间为索引2到列表末尾,遍历后确认区间最小值为5,恰好就是区间起点(索引2位置)的元素,不需要执行交换操作,最终列表状态为
[2, 3, 5, 8, 10, 6, 8, 12]
内容的提问来源于stack exchange,提问作者RTStriker
相关产品推荐
相关产品推荐

