dwm.exe_什麼是桌面視窗管理器(dwm.exe),為什麼執行?
阿新 • • 發佈:2020-10-14
稀疏陣列
什麼是稀疏陣列
如果在一個數組中,大部分元素的值均為0(或同一值)時,傳統的二維陣列儲存方式,會利用大量的儲存空間來存放0值,從而浪費大量記憶體。比如說醫學影象中的背景,或者一些資料轉化後的特徵等都會出現這種問題。
為了解決這個問題引入了稀疏陣列的概念,它是通過一個三元組的方式將非0資料儲存到一個數組中,該陣列即是稀疏陣列。
程式碼實現
package Scanner; public class Demo4 { public static void main(String[] args) { //生成原始陣列 int[][] array = new int[11][11]; array[1][2] = 1; array[2][3] = 2; System.out.println("輸出原始陣列"); for(int[] arr : array){ for(int val : arr){ System.out.print(val + "\t"); } System.out.println(); } //統計原始陣列中非0值的個數 int sum = 0; for(int i = 0; i < array.length; i++){ for(int j = 0; j < array[0].length; j++){ if(array[i][j] != 0) sum++; } } System.out.println("非零值的個數:" + sum); //建立一個稀疏陣列的陣列, 稀疏陣列的第一行為原始陣列的行數,列數,非零值個數 int [][] SparseArray = new int[sum+1][3]; SparseArray[0][0] = array.length; SparseArray[0][1] = array[0].length; SparseArray[0][2] = sum; //將非零值的資訊放到稀疏陣列中 //每一行存放非零值的行數,列數,值 int cnt = 0; for(int i = 0; i < array.length; i++){ for(int j = 0; j < array[i].length; j++){ if(array[i][j] != 0){ cnt++; SparseArray[cnt][0] = i; SparseArray[cnt][1] = j; SparseArray[cnt][2] = array[i][j]; } } } System.out.println("輸出稀疏陣列"); for(int i = 0; i < SparseArray.length; i++){ for(int j = 0; j < SparseArray[i].length; j++){ System.out.print(SparseArray[i][j] + "\t"); } System.out.println(); } //還原陣列 int[][] RestoreArray = new int[SparseArray[0][0]][SparseArray[0][1]]; for(int i = 1; i < SparseArray.length; i++){ RestoreArray[SparseArray[i][0]][SparseArray[i][1]] = SparseArray[i][2]; } System.out.println("輸出還原後的陣列"); for(int[] arr : RestoreArray){ for(int val : arr){ System.out.print(val + "\t"); } 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 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 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 非零值的個數:2 輸出稀疏陣列 11 11 2 1 2 1 2 3 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 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 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 Process finished with exit code 0