91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Sparsearray稀疏數組的使用方法

發布時間:2020-07-28 16:03:32 來源:億速云 閱讀:185 作者:小豬 欄目:編程語言

這篇文章主要講解了Sparsearray稀疏數組的使用方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

  今天復習下稀疏數組相關思想。

  問題引入:編寫的五子棋程序中,有存盤退出和續上盤的功能。

Sparsearray稀疏數組的使用方法

  如上圖所示二維數組,大多值是默認值(0),所以記錄大量無意義的數據意義不大,此時可以引入稀疏數組。

  稀疏數組介紹:當一個數組大部分元素為固定值時,可以使用稀疏數組來保存類似數組;

  稀疏數組處理思路:

稀疏數組記錄二維數組的行列數以及非默認值數目;

將原始數組中的非默認值以及其坐標記錄在稀疏數組中,從而減小文件容量;

public class SparseArray {
  public static void main(String[] args) {
    // 創建原始二維數組(0 表示無子,1 表示黑子 2 表示 白子)
    int chessArr1[][] = new int[11][11];
    chessArr1[1][2] = 1;
    chessArr1[3][3] = 2;
    chessArr1[5][1] = 2;
    // 使用 for 循環遍原始二維數組
    System.out.println("-------------------------------------------原始二維數組---------------------------------");
    for (int row[] : chessArr1) {
      for (int data : row) {
        System.out.printf("%d\t", data);
      }
      System.out.println();
    }
    // 將二維數組轉換為洗漱數組
    // 獲取原始二維數組非零數目
    int sum = 0;
    for (int i = 0; i < chessArr1.length; i++) {
      for (int j = 0; j < chessArr1.length; j++) {
        if (chessArr1[i][j] != 0) {
          sum++;
        }
      }
    }
    System.out.println("sum = " + sum);

    // 創建稀疏數組
    int sparseArr[][] = new int[sum + 1][3];
    // 為稀疏數組賦值
    sparseArr[0][0] = chessArr1.length;
    sparseArr[0][1] = chessArr1.length;
    sparseArr[0][2] = sum;
    // 便利原始二維數組,進行存放
    int n = 0;
    for (int i = 0; i < chessArr1.length; i++) {
      for (int j = 0; j < chessArr1.length; j++) {
        if (chessArr1[i][j] != 0) {
          n++;
          sparseArr[n][0] = i;
          sparseArr[n][1] = j;
          sparseArr[n][2] = chessArr1[i][j];
        }
      }
    }
    // 遍歷稀疏數組
    System.out.println("-------------------------------------------稀疏數組---------------------------------");
    for (int i = 0; i < sparseArr.length; i++) {
      System.out.printf("%d\t%d\t%d\t\n", sparseArr[i][0], sparseArr[i][1], sparseArr[i][2]);
    }
    // 將稀疏數組還原為原始二維數組
    int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
    for (int i = 1; i < sparseArr.length; i++) {
      chessArr2[chessArr2[i][0]][chessArr2[i][1]] = chessArr2[i][2];
    }
    System.out.println("-------------------------------------------恢復后的二維數組---------------------------------");
    for (int row[] : chessArr1) {
      for (int data : row) {
        System.out.printf("%d\t", data);
      }
      System.out.println();
    }

  }
}

輸出結果如下:

-------------------------------------------原始二維數組-------------------------------
0  0  0  0  0  0  0  0  0  0  0 
0  0  1  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  2  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  2  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
sum = 3
-------------------------------------------稀疏數組---------------------------------
11 11 3 
1  2  1 
3  3  2 
5  1  2 
-------------------------------------------恢復后的二維數組---------------------------
0  0  0  0  0  0  0  0  0  0  0 
0  0  1  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  2  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  2  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 
0  0  0  0  0  0  0  0  0  0  0 

看完上述內容,是不是對Sparsearray稀疏數組的使用方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丰原市| 腾冲县| 错那县| 玛沁县| 方城县| 依安县| 南安市| 团风县| 马鞍山市| 利川市| 宾川县| 德阳市| 揭东县| 长乐市| 繁昌县| 九江县| 黄平县| 应用必备| 泸溪县| 盐山县| 东平县| 昌都县| 安远县| 桃江县| 独山县| 唐山市| 乐都县| 安岳县| 襄樊市| 邹平县| 大悟县| 大厂| 洪湖市| 固阳县| 肥城市| 潜山县| 大城县| 慈利县| 揭西县| 奇台县| 正安县|