Java配列02(多次元配列、配列クラス、バブルソート、スパース配列)

多次元配列
1.多次元配列は配列の配列と見なすことができます。たとえば、2次元配列は特殊な配列であり、各要素は1次元配列です
。2。2次元配列:

int a[][] = new int [2][5];

コード例(2次元配列をトラバースする)

package com.hao.array;

public class ArrayDemo04 {
    public static void main(String[] args) {
        int [][] array = {
   
   {1,2},{2,3},{3,4},{4,5}};
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j]+" ");
            }
            System.out.println();
        }
    }
}

サンプル出力
ここに画像の説明を挿入

配列クラス
1.配列ツールクラスjava.util.Arrays2
。配列オブジェクト自体には呼び出すメソッドがないため、APIには、いくつかの基本データを実行できるように、使用するツールクラス配列が用意されています。操作オブジェクト
3. ViewはJDKのヘルプ文書
4.配列クラスのメソッドは静的で変更静的メソッドです。使用中に、あなたが直接呼び出しにクラス名を使用し、できる呼び出しに該当するオブジェクトを「使用しない」
と次の一般的な関数:
1。配列への割り当て:fillメソッドを使用します
2.配列を並べ替えます:sortメソッドを昇順で使用します
3.配列を比較します:equalsメソッドを使用して要素の値かどうかを比較します配列内は等しい
4.配列要素を検索する:binarySearchメソッドを使用して、ソートされた配列を2つの検索メソッド操作コード例に分割し
ます。

package com.hao.array;

import java.util.Arrays;

public class ArrayDemo05 {
    public static void main(String[] args) {
        int [] array= {1,5,7,11,4,78,600,100};
        System.out.println(Arrays.toString(array));//遍历数组
        Arrays.sort(array);//数组进行升序排序
        System.out.println(Arrays.toString(array));
        Arrays.fill(array,0);//数组填充
        System.out.println(Arrays.toString(array));
    }
}

ここに画像の説明を挿入
コード例

package com.hao.array;

import java.util.Arrays;

public class ArrayDemo05 {
    public static void main(String[] args) {
        int [] array= {1,5,7,11,4,78,600,100};
        System.out.println(Arrays.toString(array));//遍历数组
        Arrays.sort(array);//数组进行升序排序
        System.out.println(Arrays.toString(array));
        Arrays.fill(array,2,4, 0);//2<=下标<4填充成0
        System.out.println(Arrays.toString(array));
    }
}


ここに画像の説明を挿入
バブルソート用のサンプル出力
コードサンプル

package com.hao.array;

import java.util.Arrays;

public class ArrayDemo06 {
    public static void main(String[] args) {
        int [] array={2,4,6,7,22,1,14,77};
        sort(array);
        //遍历数组
        System.out.println(Arrays.toString(array));

    }
    //冒泡排序
    //1.比较数组中,两个相邻的元素,如果第一个数比第二个大,我们就交换他们的位置
    //2.每一次比较,都会产生出一个最大,或者最小的数字
    //3.下一轮则可以减少一次排序
    //4.一次循环,直到结束
    public static int[] sort(int [] array){
        int temp=0;
        for (int i = 0; i < array.length-1; i++) {
            for (int j = 0; j < array.length-1-i; j++) {
                if(array[j]>array[j+1]){
                    temp=array[j+1];
                    array[j+1]=array[j];
                    array[j]=temp;
                }
            }
        }
        return array;
    }
}

出力例
ここに画像の説明を挿入
スパース配列
1.配列内のほとんどの要素が0または同じ値の配列の場合、スパース配列を使用して配列を保存でき
ます。2。スパース配列の処理方法は次のとおりです
。1)行数レコード配列のは列ですが、異なる値はいくつありますか?
2)要素、ランク、および値を異なる値で小規模な配列に記録し、それによってプログラムのサイズを縮小します。
例:
ここに画像の説明を挿入
コード例(スパース配列の作成とバックトラック)

package com.hao.array;

public class ArrayDemo07 {
    public static void main(String[] args) {
        //1.创建一个11*11的二维数组  0:没有棋子  1:黑棋  2:白棋
        int [][] array1=new int[11][11];
        array1[1][2]=1;
        array1[2][3]=2;
        array1[3][4]=1;
        //输出原始数组
        System.out.println("输出原始数组:");
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        System.out.println("================================================================");//分割线
        //转换为稀疏数组
        //获取有效值的个数
        int sum=0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if(array1[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效值的个数为"+sum);
        //2.创建一个稀疏数组的数组
        int array2[][]=new int[sum+1][3];
        array2[0][0]=11;
        array2[0][1]=11;
        array2[0][2]=sum;
        //遍历二维数组,将非零的值,存放稀疏数组中;
        int count=1;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if(array1[i][j]!=0){
                    array2[count][0]=i;
                    array2[count][1]=j;
                    array2[count][2]=array1[i][j];
                    count++;
                }
            }
        }
        //输出稀疏数组
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t");
        }
        System.out.println("================================================================");//分割线
        //还原稀疏数组
        System.out.println("还原稀疏数组:");
        int [][] array3=new int[array2[0][0]][array2[0][1]];
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                array3[i][j]=0;
            }
        }
        for (int i = 1; i < array2.length; i++) {
                array3[array2[i][0]][array2[i][1]]=array2[i][2];
        }
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]+"\t");
            }
            System.out.println();
        }
    }
}

サンプル出力
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_51224492/article/details/111420725