Java基础 day06

Java基础 day06

Arrays类

import java.util.Arrays;
//切勿重复造轮子
public class day06 {

    public static void main(String[] args) {
        int[] a = {1,3,2,5,4};

        System.out.println(a);
        Arrays.sort(a);//排序,正序
        System.out.println(Arrays.toString(a));
        Arrays.fill(a,0);//数组全都填充val值
        System.out.println(Arrays.toString(a));
        Arrays.fill(a,1,3,1);//[1,3)填充val
        System.out.println(Arrays.toString(a));
    }
}
输出结果:
[I@1b6d3586
[1, 2, 3, 4, 5]
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 0]

冒泡排序

两层循环,外层冒泡轮数,里层一次比较,江湖人尽皆知

import java.util.Arrays;

//冒泡排序
public class Day06_2 {

    public static void main(String[] args) {
        int[] a = new int[]{3,1,5,8,6,2};
        sort(a);
        System.out.println(Arrays.toString(a));
    }

    public static void sort(int[] arrays) {
        //int i = 0;
        for (int j = 0; j < arrays.length-1; j++) {
            for (int i = 0; i < arrays.length - j - 1; i++) {
                if (arrays[i] > arrays[i + 1]) {
                    int temp = arrays[i];
                    arrays[i] = arrays[i + 1];
                    arrays[i + 1] = temp;
                }
            }
        }
    }
}

稀疏数组

一种数据结构

  • 当一个数组中大多元素为0,或者为同一值时,可以使用稀疏数组来保存该数组。

  • 稀疏数组的处理方式:

    • 记录数组共有几行几列,有多少不同值
    • 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模-
  • 如下图:左边是原始数组,右边是稀疏数组
    image

//稀疏数组的实现与还原
//****注意(多维)二维数组的各长度如何表示****
public class Day06_3 {
    public static void main(String[] args) {
        int[][] arrays = new int[11][11];
        arrays[1][2] = 1;
        arrays[2][3] = 2;
        System.out.println("原始数组如下:");
        printArray(arrays);
        //System.out.println(arrays.length);
        System.out.println("转换成稀疏数组如下:");
        alert(arrays);

    }

    //打印数组
    static void printArray(int[][] arrays) {
        for (int[] ints : arrays) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }
    }

    static void alert(int[][] arrays) {
        //获取有效值个数
        int sum = 0;
        for (int[] ints : arrays) {
            for (int anInt : ints) {
                if (anInt != 0) {
                    sum++;
                }
            }
        }
        //创建稀疏数组
        int[][] arrays2 = new int[sum+1][3];
        arrays2[0][0] = arrays.length;
        arrays2[0][1] = arrays[0].length;
        arrays2[0][2] = sum;
        //赋值
        int count = 0;
        for (int i = 0; i < arrays.length; i++) {
            for (int j = 0; j < arrays[i].length; j++) {
                if (arrays[i][j] != 0) {
                    count++;
                    arrays2[count][0] = i;
                    arrays2[count][1] = j;
                    arrays2[count][2] = arrays[i][j];
                }
            }
        }
        for (int[] i:arrays2) {
            for (int j : i) {
                System.out.print(j + "\t");
            }
            System.out.println();
        }

        System.out.println("###################");
        System.out.println("还原成原数组:");
        //创建数值数组
        int[][] arrays3 = new int[arrays2[0][0]][arrays2[0][1]];
        //赋值
        for (int i = 1; i < arrays2.length; i++) {
            arrays3[arrays2[i][0]][arrays2[i][1]] = arrays2[i][2];
        }
        //打印
        printArray(arrays3);
    }

}


结果

原始数组如下:
0	0	0	0	0	0	0	0	0	0	0	
0	0	1	0	0	0	0	0	0	0	0	
0	0	0	2	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
转换成稀疏数组如下:
11	11	2	
1	2	1	
2	3	2	
###################
还原成原数组:
0	0	0	0	0	0	0	0	0	0	0	
0	0	1	0	0	0	0	0	0	0	0	
0	0	0	2	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	
0	0	0	0	0	0	0	0	0	0	0	

posted @ 2021-08-10 00:00  亜光君  阅读(41)  评论(0)    收藏  举报