稀疏数组之棋盘案例。java
稀疏数组之棋盘案例
首先我们先新建一个Java项目,然后我们直接先创建棋盘,设置棋子的位置。
public static void main(String[] args) { //创建一个二维数组11*11 0:没有棋子。 1:黑棋 2:白棋 int[][] array1=new int[11][11]; array1[1][2]=1; array1[2][3]=2; }
创建棋盘后然后我们先输出棋盘看一下。在此之前我们先创建一个遍历方法方便快速调用画出棋盘。
//遍历画出棋盘。 public static void Printfs(int[][] array1) { for (int[] ints:array1) { for (int anInt:ints) { System.out.print(anInt+"\t"); } System.out.println(); } }
现在我们调用方法输出(这里的代码放到主函数下)。
System.out.println("输出原始的数:"); Printfs(array1);
要转换成稀疏数组,我们要先知道稀疏数组是怎么回事。下面右边的这个二维数组就是稀疏数组。由n+1行和三列组成。主要记录左边这张表的数据和数据相对应的位置。

下面我们要创建一个稀疏数组,要先知道左边这张表内的数据有多少个。
//获取有效值的个数 int sum=0; for (int i = 0; i < 11; i++) { for (int j = 0; j <11 ; 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; int count=0; for (int i = 0; i < array1.length; i++) { for (int j = 0; j <array1[i].length ; j++) { if(array1[i][j]!=0) { count++; array2[count][0] = i; array2[count][1] = j; array2[count][2] = array1[i][j]; } } }
然后再将这个存稀疏数据的二维数组遍历出来就好了。
System.out.println("稀疏数组"); for (int i = 0; i < array2.length; i++) { System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t"); } System.out.println("=============");
下面是全部代码:
1 package com; 2 3 public class xishu { 4 5 public static void main(String[] args) { 6 //创建一个二维数组11*11 0:没有棋子。 1:黑棋 2:白棋 7 int[][] array1=new int[11][11]; 8 array1[1][2]=1; 9 array1[2][3]=2; 10 //输出原始的数组; 11 System.out.println("输出原始的数:"); 12 Printfs(array1); 13 14 //获取有效值的个数 15 int sum=0; 16 for (int i = 0; i < 11; i++) { 17 for (int j = 0; j <11 ; j++) { 18 if (array1[i][j]!=0) 19 { 20 sum++; 21 } 22 } 23 } 24 System.out.println("有效值的个数:"+sum); 25 //转换为稀疏数组来保存。 26 int[][] array2=new int[sum+1][3]; 27 array2[0][0]=11; 28 array2[0][1]=11; 29 array2[0][2]=sum; 30 int count=0; 31 for (int i = 0; i < array1.length; i++) { 32 for (int j = 0; j <array1[i].length ; j++) { 33 if(array1[i][j]!=0) { 34 count++; 35 array2[count][0] = i; 36 array2[count][1] = j; 37 array2[count][2] = array1[i][j]; 38 } 39 40 } 41 } 42 43 System.out.println("稀疏数组"); 44 for (int i = 0; i < array2.length; i++) { 45 System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t"); 46 } 47 System.out.println("============="); 48 49 } 50 //遍历画出棋盘。 51 public static void Printfs(int[][] array1) { 52 for (int[] ints:array1) 53 { 54 for (int anInt:ints) 55 { 56 System.out.print(anInt+"\t"); 57 } 58 System.out.println(); 59 } 60 } 61 }

浙公网安备 33010602011771号