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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

中压缩数组_Java稀梳数组,什么是稀梳数组?为什么使用稀梳数组?

發(fā)布時(shí)間:2025/3/20 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中压缩数组_Java稀梳数组,什么是稀梳数组?为什么使用稀梳数组? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

別讓怯弱否定自己,別讓憊懶誤了青春。

簡(jiǎn)介

  • 有些時(shí)候,一個(gè)二維數(shù)組中很多值默認(rèn)為0,因此很多無(wú)意義數(shù)據(jù),這個(gè)時(shí)候就可以使用稀梳數(shù)組,例如:一個(gè)棋盤 10*10,但是只落下了兩顆子,需要你保存整個(gè)棋盤的布局

// 以上面棋盤為例,0代表無(wú)棋子,1代表黑棋子,2代表白棋子,數(shù)組結(jié)構(gòu)如下:int[] ints = new int0 0 0 0 00 1 0 0 00 0 2 0 00 0 0 0 00 0 0 0 0

原理

  • 記錄數(shù)組一共有幾行幾列,有多少個(gè)地方存在不同的值
  • 把不同值得元素及值記錄在一個(gè)全新創(chuàng)建的小規(guī)模的數(shù)組中,從而壓縮數(shù)據(jù)大小

示例

// 以上面5*5棋盤為例:// 2排第二個(gè)不同// 3排第3個(gè)不同int[] ints = {{5,5,2},{1,1,1},{2,2,2}} // 5行5列2個(gè)不同值

相互轉(zhuǎn)化

// 原始數(shù)組int[][] ints = new int[5][5];ints[1][1] = 1;ints[2][2] = 2;for (int[] intArray : ints) {for(int intValue : intArray) {System.out.print(intValue+"t");}System.out.println();}// 輸出---------------0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 // 轉(zhuǎn)化為稀疏數(shù)組--------------// 1.獲取有效值數(shù)量,遍歷二維數(shù)組得到有效的個(gè)數(shù)int sum = 0;for (int i = 0; i < ints.length; i++) {for (int j = 0; j < ints[i].length; j++) {if(ints[i][j] != 0){sum ++;}}}System.out.println(sum);// 轉(zhuǎn)化為稀疏數(shù)組-------------int[][] sparseArray = new int[sum+1][3];sparseArray[0][0] = 5;sparseArray[0][1] = 5;sparseArray[0][2] = sum;int sumSparse = 0;for (int i = 0; i < ints.length; i++) {for (int j = 0; j < ints.length; j++) {if(ints[i][j] != 0){sumSparse++;sparseArray[sumSparse][0] = i;sparseArray[sumSparse][1] = j;sparseArray[sumSparse][2] = ints[i][j];}}}for (int i = 0; i < sparseArray.length; i++) {System.out.printf("%dt%dt%dtn",sparseArray[i][0],sparseArray[i][1],sparseArray[i][2]);}// 輸出稀疏數(shù)組-------------5 5 2 1 1 1 2 2 2 // 還原稀疏數(shù)組-----------// 根據(jù)稀疏數(shù)組第一行生成數(shù)組長(zhǎng)度int renewArray[][] = new int [sparseArray[0][0]][sparseArray[0][1]];// 根據(jù)稀疏數(shù)組的值還原數(shù)組for (int i = 1; i < sparseArray.length; i++) {renewArray[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];}for (int[] row : renewArray) {for(int data : row) {System.out.printf("%dt",data);}System.out.println();}

應(yīng)用場(chǎng)景

  • 用于壓縮數(shù)據(jù)
  • 使用稀疏數(shù)組,保存棋盤、地圖之類的二維數(shù)組
  • 把稀疏數(shù)組還原成原來(lái)的二維數(shù)組

本文作者《猿氏·凱》,如果雷同,純屬抄襲····

總結(jié)

以上是生活随笔為你收集整理的中压缩数组_Java稀梳数组,什么是稀梳数组?为什么使用稀梳数组?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。