冒泡的三种写法

学而时习之,不亦说乎!

                             --《论语》

package com.zby.bubble;

import java.util.Arrays;
/**
 * 
 * <class description>简单初级冒泡算法java实现
 * @author zby
 *
 */
public class PrimaryBubble {

    public static void main(String[] args) {
        int[] arr = { 1, 9, 2, 8, 3, 7, 4, 6, 5, 0 };
        System.out.println("排序前数组元素为:" + Arrays.toString(arr));
        bubble(arr);
        System.out.println("排序后数组元素为:" + Arrays.toString(arr));
    }

    public static void bubble(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1; j++) {
                System.out.println("第" + (i + 1) + "趟,第" + (j + 1) + "次比较");
                if (arr[j] < arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
            System.out.println("第" + (i + 1) + "趟后数组元素为:" + Arrays.toString(arr));
        }
    }
}
排序前数组元素为:[1, 9, 2, 8, 3, 7, 4, 6, 5, 0]
第1趟,第1次比较
第1趟,第2次比较
第1趟,第3次比较
第1趟,第4次比较
第1趟,第5次比较
第1趟,第6次比较
第1趟,第7次比较
第1趟,第8次比较
第1趟,第9次比较
第1趟后数组元素为:[9, 2, 8, 3, 7, 4, 6, 5, 1, 0]
第2趟,第1次比较
第2趟,第2次比较
第2趟,第3次比较
第2趟,第4次比较
第2趟,第5次比较
第2趟,第6次比较
第2趟,第7次比较
第2趟,第8次比较
第2趟,第9次比较
第2趟后数组元素为:[9, 8, 3, 7, 4, 6, 5, 2, 1, 0]
第3趟,第1次比较
第3趟,第2次比较
第3趟,第3次比较
第3趟,第4次比较
第3趟,第5次比较
第3趟,第6次比较
第3趟,第7次比较
第3趟,第8次比较
第3趟,第9次比较
第3趟后数组元素为:[9, 8, 7, 4, 6, 5, 3, 2, 1, 0]
第4趟,第1次比较
第4趟,第2次比较
第4趟,第3次比较
第4趟,第4次比较
第4趟,第5次比较
第4趟,第6次比较
第4趟,第7次比较
第4趟,第8次比较
第4趟,第9次比较
第4趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第5趟,第1次比较
第5趟,第2次比较
第5趟,第3次比较
第5趟,第4次比较
第5趟,第5次比较
第5趟,第6次比较
第5趟,第7次比较
第5趟,第8次比较
第5趟,第9次比较
第5趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第6趟,第1次比较
第6趟,第2次比较
第6趟,第3次比较
第6趟,第4次比较
第6趟,第5次比较
第6趟,第6次比较
第6趟,第7次比较
第6趟,第8次比较
第6趟,第9次比较
第6趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第7趟,第1次比较
第7趟,第2次比较
第7趟,第3次比较
第7趟,第4次比较
第7趟,第5次比较
第7趟,第6次比较
第7趟,第7次比较
第7趟,第8次比较
第7趟,第9次比较
第7趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第8趟,第1次比较
第8趟,第2次比较
第8趟,第3次比较
第8趟,第4次比较
第8趟,第5次比较
第8趟,第6次比较
第8趟,第7次比较
第8趟,第8次比较
第8趟,第9次比较
第8趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第9趟,第1次比较
第9趟,第2次比较
第9趟,第3次比较
第9趟,第4次比较
第9趟,第5次比较
第9趟,第6次比较
第9趟,第7次比较
第9趟,第8次比较
第9趟,第9次比较
第9趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
排序后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
package com.zby.bubble;

import java.util.Arrays;
/**
 * 
 * <class description>优化升级版冒泡java实现
 * @author zby
 *
 */
public class IntermediateBubble {

    public static void main(String[] args) {
        int[] arr = { 1, 9, 2, 8, 3, 7, 4, 6, 5, 0 };
        System.out.println("排序前数组元素为:" + Arrays.toString(arr));
        bubble(arr);
        System.out.println("排序后数组元素为:" + Arrays.toString(arr));
    }

    public static void bubble(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                System.out.println("第" + (i + 1) + "趟,第" + (j + 1) + "次比较");
                if (arr[j] < arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
            System.out.println("第" + (i + 1) + "趟后数组元素为:" + Arrays.toString(arr));
        }
    }
}
排序前数组元素为:[1, 9, 2, 8, 3, 7, 4, 6, 5, 0]
第1趟,第1次比较
第1趟,第2次比较
第1趟,第3次比较
第1趟,第4次比较
第1趟,第5次比较
第1趟,第6次比较
第1趟,第7次比较
第1趟,第8次比较
第1趟,第9次比较
第1趟后数组元素为:[9, 2, 8, 3, 7, 4, 6, 5, 1, 0]
第2趟,第1次比较
第2趟,第2次比较
第2趟,第3次比较
第2趟,第4次比较
第2趟,第5次比较
第2趟,第6次比较
第2趟,第7次比较
第2趟,第8次比较
第2趟后数组元素为:[9, 8, 3, 7, 4, 6, 5, 2, 1, 0]
第3趟,第1次比较
第3趟,第2次比较
第3趟,第3次比较
第3趟,第4次比较
第3趟,第5次比较
第3趟,第6次比较
第3趟,第7次比较
第3趟后数组元素为:[9, 8, 7, 4, 6, 5, 3, 2, 1, 0]
第4趟,第1次比较
第4趟,第2次比较
第4趟,第3次比较
第4趟,第4次比较
第4趟,第5次比较
第4趟,第6次比较
第4趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第5趟,第1次比较
第5趟,第2次比较
第5趟,第3次比较
第5趟,第4次比较
第5趟,第5次比较
第5趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第6趟,第1次比较
第6趟,第2次比较
第6趟,第3次比较
第6趟,第4次比较
第6趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第7趟,第1次比较
第7趟,第2次比较
第7趟,第3次比较
第7趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第8趟,第1次比较
第8趟,第2次比较
第8趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第9趟,第1次比较
第9趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
排序后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
package com.zby.bubble;

import java.util.Arrays;
/**
 * 
 * <class description>提升高级版冒泡java实现
 * @author zby
 *
 */
public class AdvancedBubble {

    public static void main(String[] args) {
        int[] arr = { 1, 9, 2, 8, 3, 7, 4, 6, 5, 0 };
        System.out.println("排序前数组元素为:" + Arrays.toString(arr));
        bubble(arr);
        System.out.println("排序后数组元素为:" + Arrays.toString(arr));
    }

    public static void bubble(int[] arr) {
        for (int i = 0; i < arr.length-1; i++) {
            boolean sorted=true;
            for (int j = 0; j < arr.length -i- 1; j++) {
                System.out.println("第"+(i+1)+"趟,第"+(j+1)+"次比较");
                if (arr[j] < arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    sorted=false;
                }
            }
            System.out.println("第" + (i+1) + "趟后数组元素为:" + Arrays.toString(arr));
            if(sorted){
                System.out.println("第"+(i+1)+"趟没有发生交换");
                break;
            }    
        }
    }
}
排序前数组元素为:[1, 9, 2, 8, 3, 7, 4, 6, 5, 0]
第1趟,第1次比较
第1趟,第2次比较
第1趟,第3次比较
第1趟,第4次比较
第1趟,第5次比较
第1趟,第6次比较
第1趟,第7次比较
第1趟,第8次比较
第1趟,第9次比较
第1趟后数组元素为:[9, 2, 8, 3, 7, 4, 6, 5, 1, 0]
第2趟,第1次比较
第2趟,第2次比较
第2趟,第3次比较
第2趟,第4次比较
第2趟,第5次比较
第2趟,第6次比较
第2趟,第7次比较
第2趟,第8次比较
第2趟后数组元素为:[9, 8, 3, 7, 4, 6, 5, 2, 1, 0]
第3趟,第1次比较
第3趟,第2次比较
第3趟,第3次比较
第3趟,第4次比较
第3趟,第5次比较
第3趟,第6次比较
第3趟,第7次比较
第3趟后数组元素为:[9, 8, 7, 4, 6, 5, 3, 2, 1, 0]
第4趟,第1次比较
第4趟,第2次比较
第4趟,第3次比较
第4趟,第4次比较
第4趟,第5次比较
第4趟,第6次比较
第4趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第5趟,第1次比较
第5趟,第2次比较
第5趟,第3次比较
第5趟,第4次比较
第5趟,第5次比较
第5趟后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
第5趟没有发生交换
排序后数组元素为:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

 

转载于:https://www.cnblogs.com/zby9527/p/7478575.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值