java冒泡排序

数组排序可用Arrays.sort(arr);
本文介绍经典冒泡排序思想和代码实现。
冒泡排序思想每轮比较出一个最值,这样比较的轮数为数组长度-1。

问题一:那么如何比较出最值呢?
以升序为例:
相邻的元素依次比较,即索引为x的元素和索引为x+1的元素比较,将较大值赋值给索引为x+1的元素,较小值赋值给索引为x的元素。
代码实现案例:

//从小到大排序
      int [] arr = {13,3,5,9,8,6,7,10,15,11,14,4,12};
        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]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        StringBuilder sb = new StringBuilder("数组从小到大排序结果为:");
        for (int x:arr){
            sb.append(x+"<");
        }
        System.out.println(sb.substring(0,sb.length()-1));

外层控制比较轮数,内层负责每轮比较出一个最大值并将最大值至于数组尾部。

由于每轮比较出了一个最大值并且在数组的尾部,那么下次比较较大值时只需要比较
arr.length-1-i次,因为最大值已经在末尾了不需要在比较了。

外层轮数为arr.length-1是因为每轮都能比较出一个最大值,比如三个数字,第一轮比较出了一个最大值,第二轮又比较出一个最大值,那么剩下的那个肯定就是最小的了。所以是arr.length-1轮数。

理解了思想,自己就能写出代码来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值