Description
实现冒泡排序。
Input
输入的每一行表示一个元素为正整数的数组,所有值用空格隔开,第一个值为数值长度,其余为数组元素值。
Output
输出的每一行为排序结果,用空格隔开,末尾不要空格。
Solution🍒
import java.util.Scanner;
public class ojtest1_21{
static void swap(int[] a,int i,int j){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()) {
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<n;i++){//一共要进行i轮
for(int j=0;j<n-1-i;j++) {
if(a[j]>a[j+1])
swap(a,j,j+1);
}
}
for(int i=0;i<n;i++) {
if(i==n-1)
System.out.print(a[i]);
else
System.out.print(a[i]+" ");
}
}
}
}
Review🍒
复习冒泡排序。N个元素排序,需要进行N趟。在每趟里,相邻的元素之间相互比较,因为此题要求的是递增,如果左元素比右元素大,则交换二者的位置,然后继续将右元素与其右边的元素进行比较。以[10,1,35,61,89,55]作为例子展示,共7个元素待排序,因此共有7趟,具体每趟的结果如下:
以第1趟排序为举例展示冒泡排序过程:
第一趟的冒泡排序过程展示 | 结果 |
---|---|
第1次排序:10和1比较,10大于1,交换位置 | [1,10,35,61,89,36,55] |
第2次排序:10和35比较,10小于35,不交换位置 | [1,10,35,61,89,36,55] |
第3次排序:35和61比较,35小于61,不交换位置 | [1,10,35,61,89,36,55] |
第4次排序:61和89比较,61小于89,不交换位置 | [1,10,35,61,89,36,55] |
第5次排序:89和36比较,89大于36,交换位置 | [1,10,35,61,36,89,55] |
第6次排序:89和55比较,89大于55,交换位置 | [1,10,35,61,36,55,89] |