淘客網(wǎng)站是怎么做的中國(guó)seo關(guān)鍵詞優(yōu)化工具
什么是稀疏矩陣?
?矩陣中,若數(shù)值為?0?的元素?cái)?shù)目遠(yuǎn)遠(yuǎn)多于非?0?元素的數(shù)目,并且非?0?元素分布沒(méi)有規(guī)律時(shí),則稱該矩陣為稀疏矩陣;與之相反,若非?0?元素?cái)?shù)目占大多數(shù)時(shí),則稱該矩陣為稠密矩陣。? ? ?這種稀疏矩陣保存有價(jià)值的數(shù)據(jù)較少,所以可以進(jìn)行壓縮,建議一個(gè)新的數(shù)組,記錄每個(gè)非0的坐標(biāo)和值,比如一個(gè)n維數(shù)組可以建議一個(gè)(n+1)維數(shù)組來(lái)記錄值,這樣可以大大減少保存成本,但需要注意的是,當(dāng)元素個(gè)數(shù)超過(guò)1/(n+1)的時(shí)候,這種存儲(chǔ)算法會(huì)超過(guò)其原來(lái)的成本。
?
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
/*
* 稀疏矩陣算法
* */
public class InfoTest {public static void main(String[] args) throws IOException {int[][] arraydata =new int[11][11];arraydata[1][1]=1;arraydata[2][3]=7;arraydata[4][7]=13;int sum=0;for(int row[]:arraydata){for(int dt:row){System.out.printf("%d\t",dt);if(dt>0){sum++;}}System.out.println();}int[][] record=new int[sum+1][3];record[0][0]=arraydata.length;record[0][1]=arraydata.length;record[0][2]=sum;int count=0;for(int i=0;i<arraydata.length;i++){for(int j=0;j<arraydata.length;j++){if(arraydata[i][j]>0){count++;record[count][0]=i;record[count][1]=j;record[count][2]=arraydata[i][j];}}}int[][] data_list =new int[11][11];for(int i=1;i<=record.length-1;i++){int j=record[i][0];int k=record[i][1];data_list[j][k]=record[i][2];}System.out.println("**********");for(int row[]:data_list){for(int dt:row){System.out.printf("%d\t",dt);if(dt>0){sum++;}}System.out.println();}}
}
?