Rumah  >  Artikel  >  Java  >  Isih tatasusunan 2D berdasarkan nilai dalam mana-mana lajur tertentu di Jawa

Isih tatasusunan 2D berdasarkan nilai dalam mana-mana lajur tertentu di Jawa

WBOY
WBOYke hadapan
2023-08-29 21:01:03948semak imbas

Tatasusunan ialah struktur data linear yang digunakan untuk menyimpan satu set elemen dengan jenis data yang serupa. Ia menyimpan data secara berurutan. Sebaik sahaja kami mencipta tatasusunan, kami tidak boleh menukar saiznya, iaitu ia adalah panjang tetap.

Andaikan kita mempunyai tatasusunan 2D tertib M x M, dengan M ialah bilangan baris dan lajur. Kita perlu mengisih lajur yang ditentukan bagi tatasusunan yang diberikan. Dalam artikel ini kami akan cuba mencari penyelesaian kepada masalah yang diberikan.

Isih tatasusunan 2D berdasarkan nilai lajur

Isih bermaksud menyusun semula elemen senarai atau tatasusunan yang diberikan dalam tertib menaik atau menurun. Marilah kita memahami apa yang menyusun melalui perwakilan visual berikut -

Contoh 1

Apabila kita mengisih lajur pertama tatasusunan 2D ini -

Isih tatasusunan 2D berdasarkan nilai dalam mana-mana lajur tertentu di Jawa

Sintaks tatasusunan dua dimensi

// declaration with size
Data_Type nameOfarray[][] = new Data_Type[sizeofrow][sizeofcolumn]; 
Or,
// declaration and initialization
Data_Type nameOfarray[][] = { {values separated by comma} }; 

Kami boleh menggunakan mana-mana sintaks di atas dalam program kami.

Sebagai ganti Data_Type, kami boleh memberikan jenis data primitif seperti int dan double. Baris dan Lajur ialah saiz tatasusunan yang dikehendaki.

Sebelum masuk ke prosedur, mari kita bincangkan satu perkara lagi.

Antara muka pembanding

Java menyediakan kaedah terbina dalam yang dipanggil sort() untuk mengisih tatasusunan dan koleksi dalam susunan semula jadi. Comparator ialah antara muka umum yang boleh kita gunakan apabila kita perlu mengisih elemen dengan cara tersuai, pada asasnya, kita boleh mengawal susunan pengisihan. Antara muka ini mentakrifkan kaedah ‘compare()’ yang menerima dua parameter dan membandingkannya. Mengembalikan 0 apabila dua argumen adalah sama, nilai positif jika argumen pertama lebih besar daripada argumen kedua, dan nilai negatif sebaliknya.

Tatabahasa

Comparator<typeOfelement> nameOfcollection = new Comaprator<typeOfelement>() {
   // your code here
};

Algoritma

  • Langkah 1 - Tentukan kaedah "araySort()" bersama dua parameter dalam kelas "Srt". Dalam kaedah ini, cipta objek antara muka Comparator "comp". Sekarang, tentukan kaedah perbandingan yang mengambil kedua-dua tatasusunan baris bersama-sama sebagai parameter.

  • Langkah 2 - Selanjutnya, kami akan menggunakan blok if-else untuk membandingkan nilai lajur yang ditentukan dan kembalikan 1 jika elemen lajur pertama lebih besar daripada lajur kedua, jika tidak, kembalikan -1 .

  • Langkah 3 - Sekarang, susun tatasusunan menggunakan kaedah "Arrays.sort()".

  • Langkah 4 - Gunakan dua untuk gelung untuk mencetak tatasusunan diisih baharu.

  • Langkah 5 - Akhir sekali, dalam kaedah main(), kami akan mengisytiharkan dan memulakan tatasusunan. Teruskan mencipta objek kelas "Srt" dan panggil kaedah "araySort()" dengan "aray" dan indeks lajur sebagai parameter.

Contoh

import java.util.*;
class Srt {
   void araySort(int aray[][], int cl) {
      Comparator<int[]> comp = new Comparator<int[]>() {
         public int compare(int[] val1, int[] val2) {
            if(val1[cl-1] > val2[cl-1]) {
               return 1;
            } else {
               return -1;
            }
         }
      };
      Arrays.sort(aray, comp);
      System.out.println("The sorted array: ");
      for(int i = 0; i< aray.length; i++) {
         for (int j = 0; j < aray[i].length; j++) {
            System.out.print(aray[i][j] + " ");
         }
         System.out.println();
      }
   }
}
public class Sorting {
   public static void main(String[] args) {
      int aray[][] = { { 7, 2, 1, 3 }, { 6, 1, 3, 7 }, { 4, 9, 8, 0 }, { 8, 0, 1, 2 } };
      System.out.println("The given array we have: ");
      // for each loop to print original 2D array
      for (int[] array : aray) {
         for (int print : array) {
            System.out.print(print + " ");
         } 
         System.out.println();
      }
      Srt obj = new Srt();
      // calling method using object
      obj.araySort(aray, 1);
      obj.araySort(aray, 3);
   }
}

Output

The given array we have: 
7 2 1 3 
6 1 3 7 
4 9 8 0 
8 0 1 2 
The sorted array: 
4 9 8 0 
6 1 3 7 
7 2 1 3 
8 0 1 2 
The sorted array: 
8 0 1 2 
7 2 1 3 
6 1 3 7 
4 9 8 0

Kesimpulan

Tatasusunan dua dimensi ialah tatasusunan dengan baris dan lajur. Dalam artikel ini, kami mencipta program Java untuk mengisih tatasusunan dua dimensi berdasarkan nilai lajur yang ditentukan. Kami melihat cara mengisih tatasusunan atau koleksi menggunakan kaedah terbina dalam "compare()" antara muka Comparator.

Atas ialah kandungan terperinci Isih tatasusunan 2D berdasarkan nilai dalam mana-mana lajur tertentu di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam