二維數組

1.二維數組遍歷

(1).第一種遍歷方式(for循環)

        //聲明一個二維數組
        int chessArr[] [] =new int[11][11];
        chessArr[1][2]=1;
        chessArr[2][3]=2;
        chessArr[3][4]=3;
        //輸出原始的二維數組,遍歷二維數組第一種方法
        for (int i = 0; i < chessArr.length; i++) {
            for (int j = 0; j <chessArr[i].length ; j++) {
                System.out.printf("%d\t",chessArr[i][j]);
            }
            System.out.println();
        }

(2).第一種遍歷方式(forEach循環)  

//聲明一個二維數組
        int chessArr[] [] =new int[11][11];
        chessArr[1][2]=1;
        chessArr[2][3]=2;
        chessArr[3][4]=3;
        //輸出原始的二維數組,遍歷二維數組第二方法
        System.out.println("數組遍歷的第二種方式");
        for(int [] row :chessArr){
            for  (int data:row){
                System.out.printf("%d\t",data);
            }
            System.out.println();
        }

2.二維數組轉成稀疏數組  

 (1).什麼是稀疏數組 

  好比有一個4行4列的二維數組int[4][4]轉換成稀疏數組,java

  稀疏數組的第0行,4,4,4 分別表明的是二維數組有4行,4列,有4個不爲0的值。數組

  稀疏數組的第1行,0,0,1 表明的是在二維數組的第0行第0列的值爲1spa

  稀疏數組的第2行,1,1,2 表明的是在二維數組的第1行第1列的值爲2blog

  以此類推........for循環

  說明以下圖:class

    

 (2).實現思路

   首先遍歷二維數組,獲得有效數據的個數爲sum(這裏指的是二維數組中不爲0的值),而後根據sum建立稀疏數組 int sparArr[sum+1][3],最後將二維數組中的值存放到二維數組中。循環

public static void main(String[] args) {
        //聲明一個二維數組
        int chessArr[] [] =new int[11][11];
        chessArr[1][2]=1;
        chessArr[2][3]=2;
        chessArr[3][4]=3;
        //先統計二維數組中不爲0數據的個數
        int sum=0;
        for (int i = 0; i <chessArr.length ; i++) {
            for (int j = 0; j <chessArr[i].length ; j++) {
                if (chessArr[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("二維數組中不爲0的個數:"+sum);
        //建立稀疏數組,把二維數組中的值存放到稀疏數組中
        int sparseArr[][] = new int[sum + 1][3];
        sparseArr[0][0]=11;
        sparseArr[0][1]=11;
        sparseArr[0][2]=sum;
        int count = 0; //count 用於記錄是第幾個非0數據
        for (int i = 0; i <chessArr.length ; i++) {
            for (int j = 0; j <chessArr[i].length ; j++) {
                if (chessArr[i][j]!=0){
                    count++;
                    sparseArr[count][0]=i;
                    sparseArr[count][1]=j;
                    sparseArr[count][2]=chessArr[i][j];
                }
            }
        }
        System.out.println("稀疏數組爲!!!!!!!!!!");
        for (int i = 0; i <sparseArr.length ; i++) {
            for (int j = 0; j <sparseArr[i].length ; j++) {
                System.out.printf("%d\t",sparseArr[i][j]);;
            }
            System.out.println();
        }
        System.out.println("稀疏數組轉換成二維數組");
        //先經過稀疏數組的第一行,聲明一個二維數組
        int arr[] [] =new int [sparseArr[0][0]][sparseArr[0][1]];
        //再吧對應的值複製到二維數組指定的位置
       for(int i=1;i<sparseArr.length;i++){
            arr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
        }
 
    } 

3.稀疏數組轉換成二維數組

 (1).實現思路

  首先讀取稀疏數組的第一行,建立原始的二維數組,好比 int [4][4],而後再讀取稀疏數組中後幾行的數組,存放到二維數組中。  遍歷

public static void main(String[] args) {
        //聲明一個二維數組
        int chessArr[] [] =new int[11][11];
        chessArr[1][2]=1;
        chessArr[2][3]=2;
        chessArr[3][4]=3;
        //先經過稀疏數組的第一行,聲明一個二維數組
        int arr[] [] =new int [sparseArr[0][0]][sparseArr[0][1]];
        //再把對應的值複製到二維數組指定的位置
       for(int i=1;i<sparseArr.length;i++){
            arr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
        }
        System.out.println("從新獲得的二維數組爲@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        for (int i = 0; i <arr.length ; i++) {
            for (int j = 0; j <arr[i].length ; j++) {
                System.out.printf("%d\t",arr[i][j]);;
            }
            System.out.println();
        }

    }  

天天進步一丟丟方法

完成。im

相關文章
相關標籤/搜索