Java数据结构---认识稀疏数组

目录

 

从实际背景聊一聊什么是稀疏数组

1.实际需求

2.基本介绍

3.应用实例 

4.代码实现


从实际背景聊一聊什么是稀疏数组

1.实际需求

Java数据结构---认识稀疏数组_第1张图片

 

2.基本介绍

当一个数组中大部分元素为0 , 或者为同一个值的数组时, 可以使用稀疏数组来保存该数组。
稀疏数组的处理方法是:

(1)记录数组一共有几行几列, 有多少个不同的值

(2)把具有不同值的元素的行列及值记录在一个小规模的数组中, 从而缩小程序的规模

Java数据结构---认识稀疏数组_第2张图片


 

3.应用实例 

(1)使用稀疏数组, 来保留类似前面的二维数组( 棋盘、地图等等)
(2)把稀疏数组存盘, 并且可以从新恢复原来的二维数组数
(3)二维数组与稀疏数组互相转换思路分析(见下图)

Java数据结构---认识稀疏数组_第3张图片


4.代码实现

public class SparseArray {
    public static void main(String[] args) {
        //创建原始数组
        int [][] originArr=createArray();
        //展示原始数组
        showArray(originArr);
        //将原始数组转化为稀疏数组并展示
        int[][] sparseArr=toSparseArray(createArray());
        showArray(sparseArr);
        //将稀疏数组转化为原始数组并展示
        showArray(toArray(sparseArr));
    }
    /*该方法创建一个二维数组*/
    private static int[][] createArray(){
        // 创建一个原始的二维数组 11 * 11
        // 0: 表示没有棋子, 1 表示 黑子 2 表蓝子
        int arr[][]=new int [11][11];
        arr[1][2]=1;
        arr[2][3]=2;
        return arr;
    }
    /*该方法展示二维数组*/
    private  static  void showArray(int arr[][]){
        for(int arrItem[]:arr){
            for(int item:arrItem){
                System.out.printf("%d\t",item);
            }
            System.out.println();
        }
    }
    /*该方法将传入的二维数组转化为稀疏数组并返回*/
    private static int[][] toSparseArray(int [][]arr){
        //先遍历原始数组,得到有效元素的个数
        int  count=0;
        int rows=arr.length;
        int cols=arr[0].length;
        for(int i=0;i

 

你可能感兴趣的:(Java数据结构与算法)