• 数组实现稀疏数组


      1 public class SparseArray {
      2 
      3     //二维数组转换稀疏数组
      4     public static void TwoArrayToSparseArray(){
      5         //定义原始二维数组 转换
      6         int[][] originalArray=new int[11][11];
      7         //模拟给二维数组存数据
      8         originalArray[3][4]=1;
      9         originalArray[6][7]=2;
     10         //遍历二维数组 得到不同的值的个数 用于创建稀疏数组
     11         int count=0;//记录不同值的个数
     12         for (int[] ints : originalArray) {
     13             for (int item : ints) {
     14                 if(item!=0){
     15                     count++;
     16                 }
     17             }
     18         }
     19 
     20         //创建稀疏数组, 稀疏数组格式为 N+1行 和固定3 列
     21         //第一列存原始数组的行  第二列存原始数组的列  第三列存原始数组值不同的个数
     22         //稀疏数组第一行就用于存放 原始数组的行和列 和不同值的个数
     23         //剩下的N行取决于不同值的个数  每一行存放 不同值的行 列 和不同的值
     24         int[][] sparseArray=new int[count+1][3];
     25 
     26         //给稀疏数组第一行赋值 原始数组的行 列和不同值的个数
     27         sparseArray[0][0]=originalArray.length;
     28         sparseArray[0][1]=originalArray[0].length;
     29         sparseArray[0][2]=count;
     30 
     31         //稀疏数组保存数据需要索引一行一行递增 因为第1行已经添加 所以从二行开始
     32         int index=1;
     33 
     34         //遍历原始数组 存放数据
     35         for (int i = 0; i < originalArray.length; i++) {
     36             for (int j = 0; j < originalArray.length; j++) {
     37                 if(originalArray[i][j]!=0){
     38                     //找到不同值 给稀疏数组赋值 第一列是原始数组行 第二列是原始数组列
     39                     //第三列是原始数组中不同的值  然后索引自增
     40                     sparseArray[index][0]=i;
     41                     sparseArray[index][1]=j;
     42                     sparseArray[index][2]=originalArray[i][j];
     43                     index++;
     44                 }
     45             }
     46         }
     47 
     48         System.out.println("打印从二维数组转换完毕的稀疏数组");
     49         //打印稀疏数组
     50         for (int i = 0; i < sparseArray.length; i++) {
     51             System.out.println(sparseArray[i][0]+"	"+sparseArray[i][1]+"	"+sparseArray[i][2]+"	");
     52         }
     53     }
     54 
     55     //稀疏数组转换二维数组
     56     public static void SparseArrayToTwoArray(){
     57         //创建稀疏数组
     58       int[][]  sparseArray=new int[3][3];
     59       //模拟数据
     60        sparseArray[0][0]=11;
     61         sparseArray[0][1]=11;
     62         sparseArray[0][2]=2;
     63         sparseArray[1][0]=3;
     64         sparseArray[1][1]=4;
     65         sparseArray[1][2]=1;
     66         sparseArray[2][0]=6;
     67         sparseArray[2][1]=7;
     68         sparseArray[2][2]=2;
     69 
     70         //创建二维数组
     71         //先得到二维数组的行和列
     72         int row=sparseArray[0][0];
     73         int column=sparseArray[0][1];
     74         int[][] originalArray=new int[row][column];
     75 
     76   //遍历稀疏数组给二维数组赋值 因为稀疏数组第一列存的是二维数组的行列 不同值个数 遍历从1开始
     77         for (int i = 1; i <= sparseArray.length-1; i++) {
     78             //每一行数据的第一列为 行 第二列为列 第三列为值 根据行,列,值给二维数组赋值
     79              row=sparseArray[i][0];
     80             column=sparseArray[i][1];
     81             originalArray[row][column]=sparseArray[i][2];
     82         }
     83 
     84         //打印二维数组
     85         System.out.println("打印从稀疏数组转换完成的二维数组");
     86         for (int[] ints : originalArray) {
     87             for (int item : ints) {
     88                 System.out.print(item+"	");
     89             }
     90             System.out.println();
     91         }
     92     }
     93 
     94 
     95 
     96     public static void main(String[] args) {
     97 
     98         //二维数组转换稀疏数组
     99         TwoArrayToSparseArray();
    100 
    101         //稀疏数组转换二维数组
    102         SparseArrayToTwoArray();
    103     }
    104 
    105 
    106 
    107 }
  • 相关阅读:
    Hadoop学习---Zookeeper+Hbase配置学习
    Hadoop学习---Hadoop的HBase的学习
    Hadoop学习---Hadoop的MapReduce的原理
    Hadoop学习---Hadoop的深入学习
    Hadoop学习---Eclipse中hadoop环境的搭建
    Hadoop学习---CentOS中hadoop伪分布式集群安装
    Hadoop学习---Ubuntu中hadoop完全分布式安装教程
    大数据学习---大数据的学习【all】
    Java实例---flappy-bird实例解析
    UML类图详细介绍
  • 原文地址:https://www.cnblogs.com/java888/p/11666708.html
Copyright © 2020-2023  润新知