Java >> Java tutorial >  >> Java

Sorter 2d Array i Java

Sorter 2d Array i Java | I dette afsnit vil vi forklare, hvordan man sorterer 2d-arrays ved at bruge sorteringsteknikker og funktioner, der er tilgængelige i Java-biblioteket.

2d Array Sortering i Java

Lad os se 2d Array-sortering i Java ved hjælp af loops.

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);
   }
}

Output:-

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

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

I ovenstående program er det samme originale array sorteret. Hvis du ønsker at få et separat array (uden at ændre det originale array), skal du før sortering oprette en kopi af 2D-array og returnere det resulterende array. Vi har diskuteret her i detaljer, hvordan man kopierer et 2D-array i Java?

I ovenstående eksempel har vi sorteret array i faldende rækkefølge. Men hvis du vil sortere array i stigende rækkefølge, kan du bruge nedenstående metode i stedet.

// 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;
               }
            }
         }
      }
   }
}

Output:-

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

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

Sorter 2d Array i Java Row Wise

I ovenstående eksempel har vi sorteret et helt 2d-array. Men nogle gange skal vi måske sortere dem på række. Det betyder, at elementer i en bestemt række vil blive sorteret i stigende eller faldende rækkefølge.

// 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;
            }
         }
      }
   }
}

Output:-

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

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

For at sortere 2d-array i Java rækkevis faldende rækkefølge ændres if-tilstanden for ovenstående metode.

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;
}

Sortér et 2d-array i Java ved hjælp af sort()-metoden

I Java Arrays-klassen er der givet en separat metode til at sortere den en-dimensionelle array:- Arrays.sort() metode. Metoden Arrays.sort() bruger Dual-Pivot Quicksort-teknikken til at sortere arrayet. Vi kan bruge Arrays.sort()-metoden til at sortere en 2d-array rækkevis.

2d array-sortering i Java Row Wise ved hjælp af sort()-metoden

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);
   }
}

Output:

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

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

Java, hvordan man sorterer en streng 2d-array

Vi har set flere eksempler på sortering af heltals 2d-array. Lad os nu se et eksempel på sortering af streng 2d array.

2d Array Sortering i 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);
   }
}

Output:

2d Array:
Stiphen John
Henry Adam
Potter Harry

Sorteret 2d Array:
John Stiphen
Adam Henry
Harry Pottemager


Java tag