Java 輕松實現二維數組與稀疏數組互轉
二維數組
二維數組本質上是以數組作為數組元素的數組,即“數組的數組”,類型說明符 數組名[常量表達式][常量表達式]。二維數組又稱為矩陣,行列數相等的矩陣稱為方陣。對稱矩陣a[i][j] = a[j][i],對角矩陣:n階方陣主對角線外都是零元素。
稀疏數組
1、稀疏算法的基本介紹
當一個數組中大部分元素為0,或者為同一個值的數組時,可以使用稀疏數組來保存該數組。從而減少計算機不必要的內存開銷。
2、稀疏算法的處理方式
(1)數組中第一行記錄原始數組中一共有幾行幾列,有多少個不同的值。
(2)把具有不同值的元素的行列及值記錄在一個小規(guī)模的數組中,從而縮小程序的規(guī)模。
二維數組轉稀疏數組的思路
- 遍歷原始的二維數組,得到有效數據的個數sum,根據sum就可以創(chuàng)建稀疏數組sparseArr int[sum+1][3]
- 將二維數組的有效數據存入到稀疏數組
稀疏數組轉原始的二維數組的思路:
- 先讀取稀疏數組的第一行,根據第一行的數據,創(chuàng)建原始的二維數組,比如上面的chessArr2=int[11][11]
- 再讀取稀疏數組后幾行的數據,并賦給原始的二維數組即可
寫一個二維數組:
//1.創(chuàng)建一個二維數組 int chessArr1[][]=new int[11][11]; //2.給二維數組賦值 chessArr1[1][2]=1; chessArr1[2][3]=2; //3.雙重for循環(huán)輸出二維數組 System.out.println("原始的二維數組:"); for (int[] row : chessArr1) { for (int data : row) { System.out.printf("%d\t",data); } //每輸出完一個一重數組換一行 System.out.println(); }
將二維數組換換位稀疏數組
//將二維數組轉稀疏數組 //1.先遍歷二維數組,得到非0數據的個數,知道數據個數,就可以創(chuàng)建稀疏數組(知道了稀疏數組的行) int sum=0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if (chessArr1[i][j]!=0){ sum++; } } } System.out.println("有效值的個數為:"+sum); //2.創(chuàng)立對應的稀疏數組 int sparseArr[][]=new int[sum+1][3]; //3.給稀疏數組賦值 sparseArr[0][0]=11; sparseArr[0][1]=11; sparseArr[0][2]=sum; //4.遍歷二維數組,給稀疏數組 int count=0;//用于記錄是第幾行 for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if (chessArr1[i][j]!=0){ sparseArr[count+1][0]=i; sparseArr[count+1][1]=j; sparseArr[count+1][2]=chessArr1[i][j]; count++; } } } //5.輸出稀疏數組 //以下是兩種遍歷方式: /*for (int[] ints : sparseArr) { for (int anInt : ints) { System.out.printf("%d\t",anInt); } //把一個數組遍歷完之后換一行 System.out.println(); }*/ 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]); }
將稀疏數組還原為二維數組
//把稀疏數組還原為二維數組 //1.創(chuàng)建二維數組 int chessArr2[][]=new int[sparseArr[0][0]][sparseArr[0][1]]; //2.給二維數組賦值 for (int i = 1; i < sparseArr.length; i++) { chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2]; } //3.輸出二維數組 for (int[] row : chessArr2) { for (int data : row) { System.out.printf("%d\t",data); } System.out.println(); }
樹越是向往高處的光亮,它的根就越要向下,向泥土向黑暗的深處。
到此這篇關于Java 輕松實現二維數組與稀疏數組互轉的文章就介紹到這了,更多相關Java 數組轉換內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot+SpringSecurity處理Ajax登錄請求問題(推薦)
這篇文章主要介紹了SpringBoot+SpringSecurity處理Ajax登錄請求問題,本文給大家介紹的非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-12-12