冒泡排序

思想:
对一组数字进行从小到大或者从大到小的进行排序。
它是通过让相邻的两个元素进行比较,大的元素向下沉,小的元素向上冒
arr[0]与arr[1]进行比较,如果前者大于后者,则交换位置
然后arr[1]与arr[2]进行比较,以此类推。当进行到n-1轮后,排序完成。
冒泡排序—冒泡排序算法优化

public class Bubble {
public static void main(String[] args) {
    int arr[]= {29,45,64,12,98,6};
    int temp=0;
    for(int i=0;i<arr.length-1;i++) {
        for(int j=0;j<arr.length-1-i;j++) {
            if(arr[j]>arr[j+1]) {
                temp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=temp;
            }
        }
        System.out.println("第["+(i+1)+"]轮,排序结果:"+Arrays.toString(arr));
    }
}
}

输出:
第[1]轮,排序结果:[29, 45, 12, 64, 6, 98]
第[2]轮,排序结果:[29, 12, 45, 6, 64, 98]
第[3]轮,排序结果:[12, 29, 6, 45, 64, 98]
第[4]轮,排序结果:[12, 6, 29, 45, 64, 98]
第[5]轮,排序结果:[6, 12, 29, 45, 64, 98]

优化
如果进行第一轮排序时没有发生交换,则证明是有序的,就不用再排了

public class BubbleOptimization {
public static void main(String[] args) {
    int arr[]= {10,23,32,66,45,88};
    int temp=0;
    int flag=0;
    for(int i=0;i<arr.length-1;i++) {
        flag=0;
        for(int j=0;j<arr.length-1-i;j++) {
            if(arr[j]>arr[j+1]) {
                temp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=temp;
                //如果有交换的行为,则flag=1
                flag=1;
            }
        }
        //说明上面 内for循环中,没有交换任何元素。
        if(flag==0) {
            break;
        }
        System.out.println("第["+(i+1)+"]轮,排序结果:"+Arrays.toString(arr));
    }
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值