欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Sparsearray稀疏數(shù)組原理及實例詳解

 更新時間:2020年05月06日 10:25:30   作者:1024快樂  
這篇文章主要介紹了Sparsearray稀疏數(shù)組原理及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

  今天復習下稀疏數(shù)組相關思想。

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

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

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

  稀疏數(shù)組處理思路:

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

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

public class SparseArray {
  public static void main(String[] args) {
    // 創(chuàng)建原始二維數(shù)組(0 表示無子,1 表示黑子 2 表示 白子)
    int chessArr1[][] = new int[11][11];
    chessArr1[1][2] = 1;
    chessArr1[3][3] = 2;
    chessArr1[5][1] = 2;
    // 使用 for 循環(huán)遍原始二維數(shù)組
    System.out.println("-------------------------------------------原始二維數(shù)組---------------------------------");
    for (int row[] : chessArr1) {
      for (int data : row) {
        System.out.printf("%d\t", data);
      }
      System.out.println();
    }
    // 將二維數(shù)組轉換為洗漱數(shù)組
    // 獲取原始二維數(shù)組非零數(shù)目
    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);

    // 創(chuàng)建稀疏數(shù)組
    int sparseArr[][] = new int[sum + 1][3];
    // 為稀疏數(shù)組賦值
    sparseArr[0][0] = chessArr1.length;
    sparseArr[0][1] = chessArr1.length;
    sparseArr[0][2] = sum;
    // 便利原始二維數(shù)組,進行存放
    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];
        }
      }
    }
    // 遍歷稀疏數(shù)組
    System.out.println("-------------------------------------------稀疏數(shù)組---------------------------------");
    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]);
    }
    // 將稀疏數(shù)組還原為原始二維數(shù)組
    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("-------------------------------------------恢復后的二維數(shù)組---------------------------------");
    for (int row[] : chessArr1) {
      for (int data : row) {
        System.out.printf("%d\t", data);
      }
      System.out.println();
    }

  }
}

輸出結果如下:

-------------------------------------------原始二維數(shù)組-------------------------------
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
-------------------------------------------稀疏數(shù)組---------------------------------
11 11 3 
1  2  1 
3  3  2 
5  1  2 
-------------------------------------------恢復后的二維數(shù)組---------------------------
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 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java中數(shù)組的定義與使用詳解

    Java中數(shù)組的定義與使用詳解

    這篇文章主要給大家介紹了關于Java中數(shù)組的定義與使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-11-11
  • springboot配置請求超時時間(Http會話和接口訪問)

    springboot配置請求超時時間(Http會話和接口訪問)

    本文主要介紹了springboot配置請求超時時間,包含Http會話和接口訪問兩種,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • Java 工具類總結目錄(分享)

    Java 工具類總結目錄(分享)

    下面小編就為大家?guī)硪黄狫ava 工具類總結目錄(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 淺談springboot的三種啟動方式

    淺談springboot的三種啟動方式

    這篇文章主要介紹了淺談springboot的三種啟動方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Mybatis批量插入并返回主鍵id的方法

    Mybatis批量插入并返回主鍵id的方法

    本文主要介紹了Mybatis批量插入并返回主鍵id的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java中json處理工具JsonPath的使用教程

    Java中json處理工具JsonPath的使用教程

    JsonPath類似于XPath,是一種json數(shù)據(jù)結構節(jié)點定位和導航表達式語言,這篇文章主要為大家介紹了JsonPath的基本使用,需要的小伙伴可以參考下
    2023-08-08
  • 優(yōu)化spring?boot應用后6s內啟動內存減半

    優(yōu)化spring?boot應用后6s內啟動內存減半

    這篇文章主要為大家介紹了優(yōu)化spring?boot后應用6s內啟動內存減半的優(yōu)化示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-02-02
  • 使用hutool進行ftp文件下載和上傳詳細代碼示例

    使用hutool進行ftp文件下載和上傳詳細代碼示例

    在開發(fā)Java項目時,FTP客戶端是經(jīng)常需要使用的工具,因為FTP協(xié)議在文件傳輸方面有著廣泛的應用,這篇文章主要給大家介紹了關于使用hutool進行ftp文件下載和上傳的相關資料,需要的朋友可以參考下
    2024-02-02
  • SpringMVC接收多個對象的4種方法

    SpringMVC接收多個對象的4種方法

    這篇文章主要為大家詳細介紹了SpringMVC接收多個對象的4種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • java Person,Student,GoodStudent 三個類的繼承、構造函數(shù)的執(zhí)行

    java Person,Student,GoodStudent 三個類的繼承、構造函數(shù)的執(zhí)行

    這篇文章主要介紹了java Person,Student,GoodStudent 三個類的繼承、構造函數(shù)的執(zhí)行,需要的朋友可以參考下
    2017-02-02

最新評論