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

作者:神秘网友 发布时间:2021-11-25 14:06:39

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

稀疏数值的基础概念(图示)

◆当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
◆稀疏数组的处理方式是:
◆记录数组一共有几行几列,有多少个不同值
◆把具有不同值的元素和行列及值记录在-个小规模的数组中,从而缩小程序的规模
◆如上图:上边是原始数组,下边是稀疏数组

public static void main(String[] args){
        //建立一个原始二维数组
        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 5;
        array1[3][4] = 9;
        
        for(int i=0;iarray1.length-1;i++){
            for(int j=0;jarray1.length-1;j++){
                System.out.print(array1[i][j]+"\t");
            }
            System.out.println();
        }
        
        System.out.println("======================================"
                + "====================================");
        
        //判断有多少个有效数值
        int sum = 0;
        for(int i=0;iarray1.length-1;i++){
            for(int j=0;jarray1.length-1;j++){
                if(array1[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效数值有"+sum+"个");
        
        //建立一个稀疏数组
        int[][] array2 = new int[sum+1][3];
        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = sum;
        
        //count记数
        int count = 0;
        for(int i=0;iarray1.length;i++){
            for(int j=0;jarray1[i].length;j++){
                if(array1[i][j]!=0){
                    count++;
                    //array2[count][0] 横坐标 = i
                    //array2[count][1] 纵坐标 = j
                    //array2[count][2] 值 = array1[i][j]
                    array2[count][0] = i;
                    array2[count][1] = j;
                    array2[count][2] = array1[i][j];
                }
            }
        }
        
        for(int x[]:array2){
            for(int intX:x){
                System.out.print(intX+"\t");
            }
            System.out.println();
        }
        
        System.out.println("======================================"
                + "====================================");
        
        //还原稀疏数组
        //建立一个二维数组
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        
        for(int i=1;iarray2.length;i++){
            //array3[array2的横坐标][array2的纵坐标] = array2[i][2]
            array3[array2[i][0]][array2[i][1]] = array2[i][2];
        }
        
        for(int x[]:array3){
            for(int intX:x){
                System.out.print(intX+"\t");
            }
            System.out.println();
        }

    }

本文章教程介绍完毕,更多请访问跳墙网其他文章教程!

Java数据结构---稀疏数组 相关文章

  1. Java数据结构与算法学习(1)-二维数组与稀疏数组的转换

    Java数据结构与算法学习(1)-二维数组与稀疏数组的转换 为了模拟五子棋存档功能,将五子棋的分布模拟成二维数组,转化为稀疏数组,存入本地文件中。 稀疏数组的第一行代表二维数组有几行几列一共有多少个非0(或其他数...

  2. 数据结构(Java)稀疏数组

    数据结构(Java)稀疏数组 数据结构(Java)稀疏数组 稀疏矩阵 (英语:sparse matrix),在数值分析中,是其元素大部分为零的矩阵。反之,如果大部分元素都非零,则这个矩阵是 稠密 的。在计算机中以数组方式存储矩...

  3. (一)Java数据结构之稀疏数组

    (一)Java数据结构之稀疏数组 稀疏数组(sparse array) 是一种只为数组中的非零元素分配内存的特殊类型数组,分为三列: 行下标 列下标 值 第一行为总行数、总列数、值的个数,其他行存储了非零元素的下标和值。 根据上图我...

  4. 数据结构与算法(Java)稀疏数组

    数据结构与算法(Java)稀疏数组 文章目录 一、五子棋案例 二、稀疏数组 1.基本介绍 2.代码实现 总结 一、五子棋案例 假如我们要开发一款五子棋程序,使用一个二维数组对棋盘数据进行维护是常见的思路。下面以常见的15x15...

  5. Java数组:稀疏数组

    记得看数据结构教材,有关稀疏数组介绍很全 话不多说,直接上代码: package com.zdz.array;public class ArrayDemo1 { public static void main(String[] args) { //1.创建一个二维数组 11*11 稀疏数组 int[][] array1=new int[11][11]; array1[1][2]=1; ar

  6. Java 数组-冒泡排序和稀疏数组

    Java 数组-冒泡排序和稀疏数组 冒泡排序 //数组的静态初始化int[] maoPaoPaiXu = {322,432,345,654,523,534,63,52,423}; System.out.println(Arrays.toString(maoPaoPaiXu)); int tmp; for (int i = 0; i maoPaoPaiXu.length-1; i++) { for (int j = 0; j ma

  7. Java数组基础数组概述、数组声明创建、数组使用、多维数组、Arrays类、稀疏数组

    数组 数组概述 数组的定义 数组是相同类型数据的有序集合。 数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成。 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。 数组声...

  8. Java实现稀疏数组和二维数组的相互转换

    Java实现稀疏数组和二维数组的相互转换 实际要求 编写的五子棋程序中,有存盘退出和续上盘的功能 因为该二维数组的很多值是默认值 0, 因此记录了 很多没有意义的数据.- 稀疏数组。 当一个数组中大部分元素为0,或者为同...

  9. Java实现普通二维数组和稀疏数组的相互转换

    Java实现普通二维数组和稀疏数组的相互转换 ? 在五子棋游戏当中,一般都有“存档”和“继续上局”的功能,存档的时候需要把棋盘上的数据转成二维数组,存储到磁盘中,继续上局的时候需要把数据从磁盘中取出来,还原到...

  10. Java数组学习004Array类,冒泡排序,稀疏数组

    Arrays类 常具有以下功能 给数组赋值:通过fill方法 public static void main(String[] args) { int[] a ={1,2,3,23425,452534,23,3}; Arrays.sort(a); System.out.println(Arrays.toString(a)); Arrays.fill(a,0);//数组填充 System.out.println(Arrays.toS

  11. 数据结构--稀疏数组

    数据结构--稀疏数组 实际场景 如下图:棋盘可以看做是一个二维数组,如果将黑子用1表示,蓝子用2表示,空白的地方用0表示,如果我们直接将棋盘数据存入二维数组,则数组中会存在大量的0,因此记录了很多没有意义的数据...

  12. 数据结构 - 稀疏数组1

    数据结构 - 稀疏数组1 1、顺序结构 数组、链表、栈、队列 2、非顺序结构 二维数组,多维数组、 树结构、图结构 稀疏数组 用于压缩数据,只存储不同的数据 二维数组转稀疏数组的思路: 稀疏数组转二维数组的思路: package com...

  13. 数据结构之稀疏数组

    数据结构之稀疏数组 稀疏 sparsearray 数组 1、实际需求 编写的五子棋程序中,有存盘退出和续上盘的功能 。 分析问题: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据-稀疏数组 。 2、基本介绍 当一个数组中...

  14. 数据结构-稀疏数组

    数据结构-稀疏数组 数据结构-稀疏数组 稀疏数组的计算方法: ? 当一个二维数组中大部分为零,或为相同的数,可以使用稀疏数组来记录。 定义一个二维数组为: 稀疏数组第一行为几行,几列,几个不为零的数 下面的每一行...

  15. Day09 java数组:Arrays类,冒泡排序,稀疏数组

    Day09 java数组:Arrays类,冒泡排序,稀疏数组 Arrays public static void main(String[] args) { int[] a={1,2,5,3,8,1}; System.out.println(Arrays.toString(a)); Arrays.sort(a);//数组排序 System.out.println(Arrays.toString(a)); Arrays.fill(a,0);/

  16. (数据结构)稀疏数组sparseArray

    (数据结构)稀疏数组sparseArray 稀疏数组是用于优化,压缩具有以下特点的二维数组: 当二维数组中的元素大部分相同,有意义的数据元素较少时,可以使用稀疏数组进行简化,节省存储空间。 例如:保存/读取五子棋棋盘数据...

  17. 稀疏数组转换Java实现

    稀疏数组转换Java实现 稀疏数组转换 二维数组转稀疏数组的思路: 1.遍历原始的二维数组,得到有效数据的个数sum 2.根据sum就可以创建稀疏数组sparseArr int [sum+1] [3] 3.将二维数组的有效数据存入稀疏数组 稀疏数组转原始的二...

  18. 数据结构-稀疏数组

    数据结构-稀疏数组 稀疏数组应用场景 概念 当一个数组大部分元素为0,或者为同一个值得数组时,可以使用稀疏数组来存储该数组 稀疏数组的处理方法 记录数组一共有几行几列,有多少个不同的值 把具有不同值元素的行列以...

  19. 数据结构之稀疏数组

    数据结构之稀疏数组 稀疏数组 基本介绍 举例 转换思路 原始代码 结果 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组,稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不...

  20. 数据结构:稀疏数组

    数据结构:稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: ①记录数组一共几行几列,有多少个不同的值。 ②把具有不同值的元素的行列及值记录在...

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2021, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词