数据结构 稀疏数组和稀疏数组的还原

文章目录

了解什么是稀疏数组

数据结构 稀疏数组和稀疏数组的还原
数据结构 稀疏数组和稀疏数组的还原
数据结构 稀疏数组和稀疏数组的还原

class SparseArray

public class SparseArray {
    public static void main(String[] args) {
        /**
         * 1.模拟出棋盘数据使用二维数组(五子棋)
         */
        int[][] array=new int[11][11];
        array[1][2]=1;
        array[2][4]=2;
        //打印棋盘来查看效果
//        for(int i=0;i<11;i++){
//            for(int j=0;j<11;j++){
//                System.out.print(array[i][j]+" ");
//            }
//            System.out.println();
//        }
        for (int[] row:array){
            for (int val:row){
                System.out.print(val+"\t");
            }
            System.out.println();
        }
        /**
         * 需要把如上的二维数组中的有效数据压缩至稀疏数组中去
         */
        //第一步:计算有效数据的个数
        int sum=0;
        for(int[] row:array){
            for(int val:row){
                if(val!=0){
                    sum++;
                }
            }
        }
        //System.out.println(sum);
        //定义稀疏数组
        int[][] sparseArray=new int[sum+1][3];
        sparseArray[0][0]=11;
        sparseArray[0][1]=11;
        sparseArray[0][2]=sum;
        int x=1;
        for(int i=0;i<11;i++){
            for(int j=0;j<11;j++){
                int y=0;
                if(array[i][j]!=0){
                    sparseArray[x][y++]=i;
                    sparseArray[x][y++]=j;
                    sparseArray[x++][y]=array[i][j];
                }
            }
        }
        //输出稀疏数组
        for(int[] row:sparseArray){
            for(int value:row){
                System.out.print(value+"\t");
            }
            System.out.println();
        }
        /**
         * 将稀疏数组转为原始的二维数组
         */
        int [][] yuanArray=new int[sparseArray[0][0]][sparseArray[0][1]];
        for(int i=1;i<sum+1;i++){
            yuanArray[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];
        }
        for (int i=0;i<yuanArray.length;i++){
            for (int j=0;j< yuanArray.length;j++){
                System.out.print(yuanArray[i][j]+"\t");
            }
            System.out.println();
        }
    }

}

执行效果图

数据结构 稀疏数组和稀疏数组的还原

上一篇:稀疏数组(java)


下一篇:java稀疏数组