日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(JAVA学习笔记) 关于稀疏数组

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (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学习笔记) 关于稀疏数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。