练习数组
冒泡排序
练习的代码(改正过)
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-i次。
-
中间变量与j+1和j的顺序没有理请,最好是画图然后根据图的箭头来就好了,先从temp开始。
-
标记一下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(); }
错误的点:
从上往下
-
对二维数组的遍历没有什么大问题,俩种方法都还能理解。
-
对于生成模糊数组这一步还是存在卡顿的地方,从二维数组到模糊数组的转化过程中,需要理清楚他并没有太多行,先生成表头,再遍历完了二维数组的有效数字即为他的行数
-
将模糊数组再转化为二维数组的时候我更想不通了哈哈,不过看了一下子就懂了,首先就是遍历模糊数组,将模糊数组当做一个表格,将模糊数组里的数据如第几行第几列,数值为多少再重新输入到二维数组中,利用好for循环对于生成数组很适用。
2022.9.20 星期二
今天是我第一次在组会上发言,讲了BDD与静态故障树的联系等,杨老师对我的要求是学会用编程实现几个BDD的实例,并且后续学习马尔可夫与蒙特卡洛法等,压力大哦,真正学编程也就这12天,就要搞这个了,还好还有半个月的时间给我学习,等我后面把狂神的课学完再去好好研究一下把,道阻且长。