Java >> Tutoriel Java >  >> Java

Trier un tableau 2d en Java

Trier un tableau 2d en Java | Dans cette section, nous expliquerons comment trier des tableaux 2d en utilisant les techniques de tri et les fonctions disponibles dans la bibliothèque Java.

Tri de tableau 2d en Java

Voyons le tri de tableaux 2d en Java en utilisant des boucles.

public class Main {

   // sort 2D array in descending order
   public static void sort2dArray(int arr[][]) {
      int n = arr.length;
      for (int i = 0; i < n; i++) {
         for (int j = 0; j < n; j++) {
            for (int k = 0; k < n; k++) {
               for (int l = 0; l < n; l++) {
                  if (arr[i][j] > arr[k][l]) {
                     // swap
                     int temp = arr[i][j];
                     arr[i][j] = arr[k][l];
                     arr[k][l] = temp;
                  }
               }
            }
         }
      }
   }

   public static void display2dArray(int arr[][]) {
      for (int i = 0; i < arr.length; i++) {
         for (int j = 0; j < arr[i].length; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      }
   }

   public static void main(String args[]) {
      int array[][] = 
              {
                { 10, 28, 72, 91 }, 
                { 27, 33, 40, 52 }, 
                { 69, 75, 73, 72 }, 
                { 46, 33, 31, 2 } 
              };

      System.out.println("2d Array: ");
      display2dArray(array);

      // sort the array
      sort2dArray(array);

      System.out.println("\nSorted 2d Array: ");
      display2dArray(array);
   }
}

Sortie :-

Tableau 2d :
10 28 72 91
27 33 40 52
69 75 73 72
46 33 31 2

Tableau 2d trié :
91 75 73 72
72 69 52 46
40 33 33 31
28 27 10 2

Dans le programme ci-dessus, le même tableau d'origine est trié. Si vous souhaitez obtenir un tableau séparé (sans modifier le tableau d'origine), puis avant le tri, créez une copie du tableau 2D et renvoyez le tableau résultant. Nous avons discuté ici en détail comment copier un tableau 2D en Java ?

Dans l'exemple ci-dessus, nous avons trié le tableau par ordre décroissant. Mais si vous souhaitez trier le tableau par ordre croissant, vous pouvez utiliser la méthode ci-dessous à la place.

// sort 2D array in ascending order
public static void sort2dArray(int arr[][]) {
   int n = arr.length;
   for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
         for (int k = 0; k < n; k++) {
            for (int l = 0; l < n; l++) {
               if (arr[i][j] < arr[k][l]) {
                  // swap
                  int temp = arr[i][j];
                  arr[i][j] = arr[k][l];
                  arr[k][l] = temp;
               }
            }
         }
      }
   }
}

Sortie :-

Tableau 2d :
10 28 72 91
27 33 40 52
69 75 73 72
46 33 31 2

Tableau 2d trié :
2 10 27 28
31 33 33 40
46 52 69 72
72 73 75 91

Trier un tableau 2d dans Java Row Wise

Dans l'exemple ci-dessus, nous avons trié un tableau 2d entier. Mais parfois, nous pouvons avoir besoin de les trier par rangée. Cela signifie que, dans une ligne particulière, les éléments seront triés par ordre croissant ou décroissant.

// sort 2D array row wise in ascending order
public static void sort2dArrayRowWise(int arr[][]) {
   for (int i = 0; i < arr.length; i++) {
      for (int j = 0; j < arr[i].length; j++) {
         for (int k = 0; k < arr[i].length - j - 1; k++) {
            if (arr[i][k] > arr[i][k + 1]) {
               // swap
               int temp = arr[i][k];
               arr[i][k] = arr[i][k + 1];
               arr[i][k + 1] = temp;
            }
         }
      }
   }
}

Sortie :-

Tableau 2d :
10 28 72 91
27 33 40 52
69 75 73 72
46 33 31 2

Tableau 2d trié :
10 28 72 91
27 33 40 52
69 72 73 75
2 31 33 46

Pour trier un tableau 2d dans l'ordre décroissant des lignes Java, modifiez la condition if de la méthode ci-dessus.

if (arr[i][k] < arr[i][k + 1]) {
   // swap
   int temp = arr[i][k];
   arr[i][k] = arr[i][k + 1];
   arr[i][k + 1] = temp;
}

Trier un tableau 2d en Java à l'aide de la méthode sort()

Dans la classe Java Arrays, une méthode distincte est donnée pour trier le tableau unidimensionnel :- méthode Arrays.sort(). La méthode Arrays.sort() utilise la technique Dual-Pivot Quicksort pour trier le tableau. Nous pouvons nous aider de la méthode Arrays.sort() pour trier un tableau 2d par ligne.

Tri de tableaux 2d dans Java Row Wise à l'aide de la méthode sort()

import java.util.Arrays;

public class Main {

   public static void display2dArray(int arr[][]) {
      for (int i = 0; i < arr.length; i++) {
         for (int j = 0; j < arr[i].length; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      }
   }

   public static void main(String args[]) {
      int array[][] = 
              { 
                { 10, 28, 72, 91 }, 
                { 27, 33, 40, 52 }, 
                { 69, 75, 73, 72 }, 
                { 46, 33, 31, 2 } 
              };

      System.out.println("2d Array: ");
      display2dArray(array);

      // sort the array
      for (int i = 0; i < array.length; i++) {
         Arrays.sort(array[i]);
      }

      System.out.println("\nSorted 2d Array: ");
      display2dArray(array);
   }
}

Sortie :

Tableau 2d :
10 28 72 91
27 33 40 52
69 75 73 72
46 33 31 2

Tableau 2d trié :
10 28 72 91
27 33 40 52
69 72 73 75
2 31 33 46

Java Comment trier un tableau de chaînes 2d

Nous avons vu plusieurs exemples de tri d'un tableau d'entiers 2d. Voyons maintenant un exemple de tri d'un tableau de chaînes 2d.

Tri de tableau 2d dans Java Row Wise

import java.util.Arrays;

public class Main {

   public static void display2dArray(String arr[][]) {
      for (int i = 0; i < arr.length; i++) {
         for (int j = 0; j < arr[i].length; j++) {
            System.out.print(arr[i][j] + " ");
         }
         System.out.println();
      }
   }

   public static void main(String args[]) {
      String array[][] = 
           { 
              { "Stiphen", "John" }, 
              { "Henry", "Adam" }, 
              { "Potter", "Harry" } 
           };
      System.out.println("2d Array: ");
      display2dArray(array);

      // sort the array
      for (int i = 0; i < array.length; i++) {
         Arrays.sort(array[i]);
      }

      System.out.println("\nSorted 2d Array: ");
      display2dArray(array);
   }
}

Sortie :

Tableau 2d :
Stiphen John
Henry Adam
Potter Harry

Tableau 2d trié :
John Stiphen
Adam Henry
Harry Potier


Balise Java