OJ题之冒泡排序

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值