Java实现冒泡排序:一步一步来

我认为冒泡排序法的重点就在于:

1.理解两个for循环代表什么

2.理解每轮冒泡可以确保最大的数字被移动到未排序序列(也就是下图蓝色圈圈)的最后位置。

理论知识:

在这张图片中一列有7个数字,如果想要从让大的排在上面,小的数字排在下面需要5轮。

  1. 先观察第0轮:5比2大,就与2交换;5和7比较,不交换;7和6比较,交换;7和1比较,交换。。。。直到比到最上面的数字。通过一轮的比较就能找到整串数字中最大的那个数字 7,如第一轮所示。
  2. 第二轮依旧是两两相比,大的数字就通过交换放到最上面,通过第二轮我们获得了这串数字中第二大的数字6,因为最大的数字7第一轮已经找到了,所以6和7就不需要再比较了,节约了运行时间和空间
  3. 第三轮比完后会获得这串数字中第三大的数字5,同样的5不用继续和上面的数字作比较了。因为比5大的早已经像泡泡一样浮在上面了
  4. 经过5轮之后就能把数字完整的排列下来了;那为什么是五轮呢?因为在第五轮的时候末尾两个数字已经比过一次了,不需要再重新比一轮了,所以比几轮就等于数字数量-2,假如八个数字只需要比六轮。。。。以此类推

 

dc3e2634382fbd343964cb5f9364346f.png

 

代码实现:

  • 第一个for代表的是循环多少轮
  • 第二个for代表的是每轮数组比较的次数,j < arr.length - i - 1这个条件是因为只要是每轮已经排好的最大的数字不需要再排了。
  • if条件用来交换,从而使大的数字往上浮。
 public static void main(String[] args) {
        int[] arr = {5, 2, 7, 6, 1, 4, 3};
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    //比较大小然后交换
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        System.out.println("排序后: " + Arrays.toString(arr));
    }

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值