Java学习Day12

练习数组

冒泡排序

练习的代码(改正过)

int[] array4 = {1,24,241,2418,210,3,412,15};
        int temp = 0;
        for (int i = 0; i < array4.length - 1; i++) {//排序的次数 - 1
​
            boolean flag = false;
            for (int j = 0; j < array4.length - 1 - i; j++) {//排好一个就少一次
                if (array4[j+1] < array4[j]){
                    temp = array4[j];
                    array4[j] = array4[j+1];
                    array4[j+1] = temp;
                    flag = true;
                }
            }
            if (flag = false){
                break;
            }
        }
        System.out.println(Arrays.toString(array4));

错误点

  1. 没有理清楚外层排序的次数与内层排序的次数,首先外层循环只需要进行数组长度-1次,而内层循环的次数会随着外层循环的增多而减少即-1-i次。

  2. 中间变量与j+1和j的顺序没有理请,最好是画图然后根据图的箭头来就好了,先从temp开始。

  3. 标记一下flag对于减少排序次数很有用,记一下。

模糊数组

练习的代码(改正过)

public class ArrayTestDomo06 {
    public static void main(String[] args) {
        //1.
        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        System.out.println("输出原始数组:");
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }
​
        System.out.println("=========================================");
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                System.out.print(array1[i][j]+"\t");
            }
            System.out.println();
        }
        //2.
        System.out.println("=========================================");
        int value = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if (array1[i][j] != 0){
                    value++;
                }
            }
        }
        System.out.println("有效的数有" + value + "个");
​
        int[][] array2 = new int[value + 1][3];
        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = 3;
​
        int count = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if (array1[i][j] != 0){
                    count++;
                    array2[count][0] = i;
                    array2[count][1] = j;
                    array2[count][2] = array1[i][j];
                }
            }
​
        }
        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                System.out.print(array2[i][j] + "\t");
            }
            System.out.println();
        }
        //3.
        System.out.println("=========================================");
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        for (int i = 1; i < array2.length; i++) {
            array3[array2[i][0]][array2[i][1]] = array2[i][2];
        }
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }

错误的点:

从上往下

  1. 对二维数组的遍历没有什么大问题,俩种方法都还能理解。

  2. 对于生成模糊数组这一步还是存在卡顿的地方,从二维数组到模糊数组的转化过程中,需要理清楚他并没有太多行,先生成表头,再遍历完了二维数组的有效数字即为他的行数

  3. 将模糊数组再转化为二维数组的时候我更想不通了哈哈,不过看了一下子就懂了,首先就是遍历模糊数组,将模糊数组当做一个表格,将模糊数组里的数据如第几行第几列,数值为多少再重新输入到二维数组中,利用好for循环对于生成数组很适用。

2022.9.20  星期二

  今天是我第一次在组会上发言,讲了BDD与静态故障树的联系等,杨老师对我的要求是学会用编程实现几个BDD的实例,并且后续学习马尔可夫与蒙特卡洛法等,压力大哦,真正学编程也就这12天,就要搞这个了,还好还有半个月的时间给我学习,等我后面把狂神的课学完再去好好研究一下把,道阻且长。

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值