二維陣列與稀疏陣列之間的轉化

2021-10-08 17:44:36 字數 1320 閱讀 8684

/*

* 1.稀疏陣列介紹:

* 如果原陣列的非0元素的個數有n個,則稀疏陣列有n+1行,列數不變,一共有三列

* 第一行儲存的資料: 原始陣列的行 原始陣列儲存的列 原始陣列中非0的元素個數

* 第二行儲存的資料: 第乙個非0元素所在的行 第乙個非0元素所在的列 第乙個非0元素的值

* ..........

* * 2.二維陣列轉化為稀疏陣列:

* 遍歷二維陣列,求出原始二維陣列中非0元素的個數sum

* 建立稀疏陣列a[sum+1][3]

* 將原始二維陣列的非0元素的值存入到稀疏陣列中

* * 3.稀疏陣列恢復為原始二維陣列

* 先利用稀疏陣列第一行的元素建立乙個二維陣列

* 將稀疏陣列後n-1行的元素賦值給新建立的二維陣列

* */

public

class

sparsearray

//2.將二維陣列轉化為稀疏陣列

求出二維陣列中非0元素的個數

int sum=0;

for(

int[

] row:array)

建立乙個稀疏陣列

int sparsearray[

]=newint

[sum+1]

[3];

sparsearray[0]

[0]=

6;//記錄行數

sparsearray[0]

[1]=

6;//記錄列數

sparsearray[0]

[2]=sum;

//記錄非0資料的個數

將原始陣列中的非0元素儲存到稀疏陣列中

int count=0;

//當前是第幾個非0元素

for(

int i=

0;i}//3.輸出稀疏陣列

system.out.

println

("稀疏陣列元素如下:");

for(

int i=

0;i)//4.恢復二維陣列

int recoverarray[

]=newint

[sparsearray[0]

[0]]

[sparsearray[0]

[1]]

;for

(int i=

1;i) system.out.

println

("恢復後的二維陣列:");

for(

int[

] row:array)

}}

稀疏陣列轉化二維陣列

public class sparse system.out.println system.out.println 轉化為稀疏陣列儲存 獲取有效值的個數 判斷是否有值 int sum 0 臨時變數,計數用的 for int i 0 i 9 i system.out.println 有效值的個數 su...

二維陣列與一維陣列之間的轉化

一維陣列轉換為二位陣列 include include define row 3 define col 2 intmain int argc,char ar int arr2d row col int i,j 一維維整型陣列轉換為二維整型陣列 for i 0 i 二維整型陣列列印顯示 for i 0...

二維陣列與稀疏陣列的相互轉化

package com.weiting.sparsearray public class sparsearray system.out.println 將二維陣列轉化為稀疏陣列 1.遍歷二維陣列得到非零的數字個數 int sum 0 for int i 0 i 11 i system.out.pri...