1. 程式人生 > 實用技巧 >Web開發規範

Web開發規範

技術標籤:java

稀疏陣列

概述

因為在二維陣列中,很多值是預設值0,記錄了許多沒用的資料

需求
在模擬的五子棋遊戲中,需要用到存檔、續盤功能

二維陣列->稀疏陣列

基本思路:
1.建立一個11行11列的二維陣列 0:沒有棋子 1:黑棋 2:白棋
2.獲取有效值的個數
3.建立一個稀疏陣列的陣列,遍歷二維陣列,將非零的數存入稀疏陣列中

JAVA程式碼

  //1.建立一個11行11列的二維陣列 0:沒有棋子 1:黑棋 2:白棋
        int[][] array1 = new int[11][11];
        array1[1][2] =1;
        array1[
2][3] =2; //輸出原始的陣列 System.out.println("輸出原始的陣列"); for (int[] ints : array1) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println("====================================="
); //轉換為稀疏陣列儲存 //獲取有效值的個數 int sum=0; for (int i = 0; i <array1.length ; i++) { for (int j = 0; j <array1[i].length ; j++) { if(array1[i][j]!=0){ sum++; } } } System.out.println(
"有效值個數為"+sum); //2.建立一個稀疏陣列的陣列 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" );

結果:在這裡插入圖片描述

稀疏陣列->二維陣列還原

基本思路:
1.讀取稀疏陣列的值
2.給其中的元素還原值
3.列印還原的陣列

JAVA程式碼


        System.out.println("還原");
        //1.讀取稀疏陣列的值
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        //2.給其中的元素還原值
        for (int i = 1; i <array2.length ; i++) {
            array3[array2[i][0]][array2[i][1]]=array2[i][2];

        }

        //3.列印還原的陣列
        System.out.println("列印還原的陣列");
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }