稀疏数组:

    1. public class sparsearArray {
    2. public static void main(String[] args) {
    3. //创建一个11*11的二维数组
    4. //0:表示沒有棋子 1:表示黑色棋子 2:表示白色棋子
    5. int[][] array1 = new int[11][11];
    6. array1[1][2] = 1;
    7. array1[2][3] = 2;
    8. array1[3][4] = 1;
    9. System.out.println("初始数组");
    10. for (int[] it :
    11. array1) {
    12. for (int i :
    13. it) {
    14. System.out.printf("%d\t", i);
    15. }
    16. System.out.println();
    17. }
    18. //转换为稀疏数组
    19. //先计算不为0的总个数
    20. int sum = 0;
    21. for (int[] it :
    22. array1) {
    23. for (int item :
    24. it) {
    25. if (item != 0) {
    26. sum++;
    27. }
    28. }
    29. }
    30. //稀疏数组的行数是sum+1所以
    31. int[][] sparsearArray = new int[sum + 1][3];
    32. sparsearArray[0][0] = 11;
    33. sparsearArray[0][1] = 11;
    34. sparsearArray[0][2] = sum;
    35. int count = 0;
    36. for (int i = 0; i < 11; i++) {
    37. for (int j = 0; j < 11; j++) {
    38. if (array1[i][j] != 0) {
    39. count++;
    40. sparsearArray[count][0] = i;
    41. sparsearArray[count][1] = j;
    42. sparsearArray[count][2] = array1[i][j];
    43. }
    44. }
    45. }
    46. //输出稀疏舒数组
    47. System.out.println("这是稀疏数组");
    48. for (int[] it :
    49. sparsearArray) {
    50. for (int item :
    51. it) {
    52. System.out.printf("%d\t", item);
    53. }
    54. System.out.println();
    55. }
    56. //稀疏数组转化为普通二维数组
    57. int[][] array2 = new int[sparsearArray[0][1]][sparsearArray[0][1]];
    58. for (int i = 1; i < sparsearArray.length; i++) {
    59. array2[sparsearArray[i][0]][sparsearArray[i][1]] = sparsearArray[i][2];
    60. }
    61. System.out.println("普通二维数组");
    62. for (int[] it :
    63. array2) {
    64. for (int i :
    65. it) {
    66. System.out.printf("%d\t", i);
    67. }
    68. System.out.println();
    69. }
    70. }
    71. }