稀疏矩陣

1.什么是稀疏矩陣?
2.什么時候使用稀疏矩陣?

稀疏矩陣就是就是在一個矩陣的的陣列中大多數(shù)都是默認(rèn)數(shù)據(jù)0
為什么使用稀疏矩陣,如果像如下圖,對于保存這樣的數(shù)據(jù)再用普通的方法保存數(shù)據(jù)就有點占用空間了,那么我們可以將有效的數(shù)據(jù)提取出來進(jìn)行保存即可,比如坐標(biāo)(1,2)數(shù)據(jù)為1,坐標(biāo)(3,4)數(shù)據(jù)為2,這個二維數(shù)組大小進(jìn)行保存即可行為8,列為8,有兩個有效數(shù)據(jù)


image.png

那么轉(zhuǎn)變之后應(yīng)該變成如下所示的樣子(五子棋中可能會使用到)


image.png

轉(zhuǎn)變的代碼如下:
public class Sparse {
    public static void main(String[] args) {
        int[][] arr = new int[8][8];
        arr[1][2] = 1;
        arr[3][4] = 2;

        int sum = 0;

        for(int[] row:arr){
            for(int item:row){
                System.out.printf("%d\t", item);
                if(item!=0)
                    sum++;
            }
            System.out.println();
        }

        int[][] newarr = new int[sum+1][3];
        newarr[0][0] = arr.length;
        newarr[0][1] = arr[0].length;
        newarr[0][2] = sum;
        int index = 1;
        for(int i=0; i<arr.length;i++){
            for(int j = 0;j<arr[i].length;j++){
                if(arr[i][j]!=0) {
                    newarr[index][0] = i;
                    newarr[index][1] = j;
                    newarr[index++][2] = arr[i][j];
                }
            }
        }
        for(int[] row:newarr){
            for(int item:row){
                System.out.printf("%d\t", item);
                if(item!=0)
                    sum++;
            }
            System.out.println();
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容