(JAVA学习笔记) 关于稀疏数组
生活随笔
收集整理的這篇文章主要介紹了
(JAVA学习笔记) 关于稀疏数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
稀疏數組介紹
當一個數組中大部分的元素為0,或者同一值的數組時,可以使用稀疏數組來保存該數組。
稀疏數組的處理方式是:
1.記錄數組一共有幾行幾列,有多少個不同的值
2.把具有不同值的元素的行列及值記錄在一個小規模的數組中從而縮小程序的規模
下面給出一個數組:
0 0 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 2 0 0 0
0 0 0 0 0 0 0
將其轉換為稀疏數組:
行?? 列 ? 值
4 ? ? 7 ? ? 2
2 ? ? 3 ? ? 1
3 ? ? 4 ? ? 2
代碼演示
public static void main(String[] args) {//創建原始數組int arr1[][] = new int[4][7];arr1[1][2] = 1;arr1[2][3] = 2;//輸出原始數組System.out.println("輸出原始數組");for (int i = 0; i <4; i++) {for (int j = 0; j <7; j++) {System.out.print(arr1[i][j]+" ");}System.out.println();}System.out.println("================分割線==================");//將原始數組轉換為稀疏數組保存//獲取有效值的個數int sum=0;for (int i = 0; i <4 ; i++) {for (int j = 0; j <7 ; j++) {if(arr1[i][j]!=0){sum++;}}}System.out.println("有效值的個數為:"+sum);//創建稀疏數組int arr2[][] = new int[sum+1][3];arr2[0][0] = 4;arr2[0][1] = 7;arr2[0][2] = sum;//遍歷二維數組arr1,將非零的值存放在稀疏數組arr2中//記錄行數int count = 0;for (int i = 0; i <4 ; i++) {for (int j = 0; j <7 ; j++) {if(arr1[i][j]!=0){count++;arr2[count][0] = i;arr2[count][1] = j;arr2[count][2] = arr1[i][j];}}}//輸出稀疏數組System.out.println("稀疏數組:");for (int i = 0; i <count+1; i++) {for (int j = 0; j <3; j++) {System.out.print(arr2[i][j]+" ");}System.out.println();}System.out.println("================分割線==================");//將稀疏數組轉換為原始數組int[][] arr3 = new int[arr2[0][0]][arr2[0][1]];for (int i = 1; i <arr2.length ; i++) {arr3[arr2[i][0]][arr2[i][1]] = arr2[i][2];}//打印轉換后的稀疏數組System.out.println("稀疏數組轉換為原始數組:");for (int i = 0; i <4; i++) {for (int j = 0; j <7; j++) {System.out.print(arr3[i][j]+" ");}System.out.println();}}輸出結果
總結
以上是生活随笔為你收集整理的(JAVA学习笔记) 关于稀疏数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (JAVA学习笔记) 冒泡排序算法
- 下一篇: (JAVA学习笔记) 类与对象小结