如何在选择排序中展示每一轮迭代完成后的状态?
选择排序迭代过程展示实现方案
要展示选择排序每一轮迭代后的数组状态,只需在排序核心循环中,每完成一轮迭代就打印当前数组即可。具体修改如下:
修改sort方法
在选择排序的外层for循环中,每完成一次最小元素定位(无论是否需要交换)后,调用你已实现的arrayToString方法打印当前数组,并标注轮次:
public static void sort(int[] a) // Sort the contents of array a in ascending numerical order { for(int i=0; i<a.length-1; i++) { int pos = smallestPosFrom(i,a); // 仅当当前元素不是最小元素时执行交换 if (pos != i) { swap(a,i,pos); } // 打印当前轮次迭代后的数组状态 System.out.printf("第%d轮迭代后:%s%n", i+1, arrayToString(a)); } }
效果示例
运行你的主方法后,输出会包含排序前的数组、每一轮迭代后的数组状态,以及最终排序完成的数组。例如输入数组为[3|1|4|2]时,输出如下:
The array you entered is: [3|1|4|2] 第1轮迭代后:[1|3|4|2] 第2轮迭代后:[1|2|4|3] 第3轮迭代后:[1|2|3|4] After sorting, the array is: [1|2|3|4]
逻辑说明
选择排序的每一轮外层循环对应一次完整迭代:核心是将未排序区间的最小元素放到已排序区间的末尾。无论是否发生元素交换,每轮循环结束后,前i+1个元素都是有序的,此时打印数组就能准确反映该轮迭代完成后的状态。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

