首頁  >  文章  >  Java  >  java稀疏數組的程式碼怎麼寫

java稀疏數組的程式碼怎麼寫

WBOY
WBOY轉載
2023-04-19 08:22:02739瀏覽

稀疏組織

  • 當一個陣列中大部分元素為0,或是為同一個值的陣列時,可以用稀疏陣列來儲存該陣列

  • 稀疏數組,記錄一共有幾行幾列,有多少個不同值

  • 把具有不同值的元素和行裡了及值記錄在一個小規模的數組中,從而縮小程式的規模!

我們定義一下原始陣列:

原始数组如下:
0 0 3 0 0 
0 0 0 0 4 
0 0 0 5 0 
0 0 6 0 0 
0 0 0 0 0

可以看出,這個陣列大部分都是0,我們可以把這個陣列轉換成稀疏陣列

稀疏數組第一行存放的分別是總行數,總列數和存放的數據總數

//因为数组的下标是从0开始的,所以可以看出,第一行的第三个数,用下标表示,实际上是数组[0][2]
	5 5 4 
	0 2 3 
	1 4 4 
	2 3 5 
	3 2 6

下面看一下如何實現這種稀疏數組,又是如何把稀疏數組還原成

程式碼範例:

package com.ling.array;
public class ArrayDemo11 {
    public static void main(String[] args) {
        int[][]   array=new int[5][5];
        array[0][2]=3;
        array[1][4]=4;
        array[2][3]=5;
        array[3][2]=6;
        System.out.println("原始数组如下:");
        for (int[] ints : array) {
            for (int anInt : ints) {
                System.out.print(anInt+" ");
            }
            System.out.println();
        }
        System.out.println("行"+"\t"+"列"+"\t"+"存放的数据"+"\t");
        //稀疏数组第一行存放的分别是总行数,总列数和存放的数据总数
//        System.out.println(5+"\t"+5+"\t"+4);
//        System.out.println(1+"\t"+3+"\t"+3);
//        System.out.println(2+"\t"+5+"\t"+4);
//        System.out.println(3+"\t"+4+"\t"+5);
//        System.out.println(4+"\t"+3+"\t"+6);
        int sum=0;
        for (int i = 0; i <5 ; i++) {
            for (int j = 0; j <5 ; j++) {
                if (array[i][j]!=0){
                    sum++;
                }
            }
        }
        int[][] arr2=new int[sum+1][3];
        //这个二维数组的第一行是确定的
        arr2[0][0]=5;
        arr2[0][1]=5;
        arr2[0][2]=sum;
        int count=0;
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                if (array[i][j]!=0){
                    count++;
                    arr2[count][0]=i;
                    arr2[count][1]=j;
                    arr2[count][2]=array[i][j];
                }
            }
        }
        System.out.println("输出稀疏数组");
        for (int[] ints : arr2) {
            for (int anInt : ints) {
                System.out.print(anInt+" ");
            }
            System.out.println();
        }
    }
}

輸出:

輸出原始的陣列
0 0 0 0 0 0 0 0 0 0 0 
0 0 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 2 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0# #0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 ##0 0 0 0 0 0 0 0 0 0 0 ##0 0 0 0000 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
有效值的輸出稀疏數組:








11    11    2    
#1    2    1    
##3    2    == =============
我們也可以把稀疏陣列進行一個還原
列印還原後的陣列
0 0 0 0 0 0 0 0 0 0 0 
# 0 0 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 2 0 0 0 0 0 0 0 0 ##0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 ##00 0 0 0 0 0 0 0 0 0 ###0 0 0 0 0 0 0 0 0 0 0 ###0 0 0 0 0 0 0 0 0 0 0 #######################

以上是java稀疏數組的程式碼怎麼寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除