问题描述:
本题目要求读入N个整数,采用冒泡排序(上升法,即每轮得到一个最小值)进行排序,输出前3轮排序后的结果。
输入格式:
输入不超过100的正整数N和N个整数(空格分隔)。
输出格式:
输出三行,第一行为第一轮排序结果,第二行为第二轮排序结果,第三行为第三轮排序结果。数据间用一个空格分隔。
为简便起见,最后一个元素后也有一个空格。
输入样例:
5
2 5 4 1 3
输出样例:
1 2 5 4 3
1 2 3 5 4
1 2 3 4 5
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = scanner.nextInt();
}
for (int i = 0; i < 3; i++) {
for (int j = n-1; j > 0; j--) {
if (a[j] < a[j-1]) {
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
for (int k = 0; k < n; k++) {
System.out.print(a[k] + " ");
}
System.out.println();
}
}
}
思路:
首先代码从输入中读取一个整数n,表示要排序的元素数量,然后依次读取n个整数到数组a中。接下来,它执行三次冒泡排序,每次排序都将数组中的元素按升序排列,不正确就交换它们,通过不断地进行比较和交换,每次循环结束后,最大的元素就会被放置在数组的最右边。 接下来有一个外层循环,它会执行三次冒泡排序。 最后,程序就会输出三次的排列数组。
(注意:这段代码只进行了3次排序操作,如果想要完全有序的数组,需要将外层循环的条件改为i < n-1。)