Java实现数组的冒泡排序算法

代码实现

/*
* 标题:冒泡排序
* 作者:Nstar
* 时间:2020年3月26日
* */
import java.util.Arrays;
//导包,因为需要用到Arrays类里面的toString方法,不导包就会报错
public class Test27 {
    public static void main(String[] args) {   //入口方法
        int[] values = new int[]{1, 3, 6, 8, 2, 12, 34, 11,10,-1};
               //定义要用到冒泡排序算法的数组,并且初始化
        int num = 0;   //定义中间变量,方便元素交换位置
        for (int b = 0; b < values.length; b++){
            //外层循环条件,values.length量出的值不能减一,因为,数组中的每个元素都要参与运算
            //如果量得的值减一,就会漏掉一个元素,这样会导致不准确
            for (int a = 0;a<values.length-1;a++){
                //定义内部循环,values.length-1这个数组长度必须减一
                //如果不减一,就会造成数组越界,因为要将每次循环得到的值作为数组下标来访问数组的元素值
                if (values[a]>values[a+1]){
                    //第一次内部循环是1和3比较,因为1不大于3,所以不交换位置
                    //第二次内部循环是2和6比较,因为2不大于6,所以不交换位置
                    //第三次内部循环是6和8比较,因为6不大于8,所以不交换位置
                    //第四次内部循环是8和2比较,因为8大于2,需要把右边的2和左边的8交换位置
                    //下面方法依次类推,满足if条件就替换位置,不满足就不替换,这样永远使得小的数在左边,大的值在右边
                    num = values[a];
                    //首先将第四次循环的8赋值给num变量,也称为数据备份
                    values[a]=values[a+1];
                    //当 num = values[a];将第四次循环的值备份后,用2直接将8覆盖
                    values[a+1] = num;
                    //此时假设,2原来位置上的值为空,然后我们又将元素值8赋值给了原来2的位置,就完成了元素位置互换操作
                }
                System.out.println(Arrays.toString(values));
                //Arrays.toString(values) 将整个数组用toString方法转换为字符串形式输出
            }
            System.out.println("---------------------------------");
            //外部循环每循环一次就打印横杠,一共外层循环了多少次我们也看得清楚
            //总循环次数=数组长度 X 数组长度-1
            //通过自创公式得出总循环次数为90次
        }
             System.out.println("冒泡排序结果:"+Arrays.toString(values));
             //最后将完成排序的数组进行输出
        }
    }

执行结果
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值