logo

Kako sortirati niz nizova u Javi

U programiranju, sortiranje je važan jer stavlja elemente an niz određenim redoslijedom. Red koji se široko koristi je abecedni red ili prirodni poredak . Razvrstavanje se koristi za kanoniziranje (proces pretvaranja podataka u standardni oblik) podataka i za izradu formata čitljivog za čovjeka. U ovom odjeljku naučit ćemo kako sortirati niz nizova u Javi korištenjem korisnički definirana logika i Nizovi. vrsta() metoda

Postoje dva načina sortiranja niza nizova u Javi:

  • Korištenje Korisnik definiran Logika
  • Koristiti Arrays.sort() Metoda

Korištenje korisnički definirane logike

Niz nizova možemo sortirati uspoređujući svaki element s ostalim elementima. U sljedećem primjeru učinili smo isto. Koristili smo dvije for petlje. Unutarnja (druga) for petlja izbjegava ponavljanja u usporedbi. Ako je uvjet (countries[i].compareTo(countries[j])>0) istinit od 0, on izvodi zamjenu i razvrstava niz.

tipkopis foreach petlja

SortStringArrayExample1.java

 import java.util.Arrays; public class SortStringArrayExample1 { public static void main(String args[]) { //defining an array of type String String[] countries = {&apos;Zimbabwe&apos;, &apos;South-Africa&apos;, &apos;India&apos;, &apos;America&apos;, &apos;Yugoslavia&apos;, &apos; Australia&apos;, &apos;Denmark&apos;, &apos;France&apos;, &apos;Netherlands&apos;, &apos;Italy&apos;, &apos;Germany&apos;}; int size = countries.length; //logic for sorting for(int i = 0; i<size-1; i++) { for (int j="i+1;" j0) swapping array elements string temp="countries[i];" countries[i]="countries[j];" countries[j]="temp;" } prints the sorted in ascending order system.out.println(arrays.tostring(countries)); < pre> <p> <strong>Output:</strong> </p> <pre> [ Australia, America, Denmark, France, Germany, India, Italy, Netherlands, South-Africa, Yugoslavia, Zimbabwe] </pre> <h3>Using the Arrays.sort() Method</h3> <p>In Java, <strong>Arrays</strong> is the class defined in the java.util package that provides <strong>sort()</strong> method to sort an array in ascending order. It uses <strong>Dual-Pivot Quicksort algorithm</strong> for sorting. Its complexity is <strong>O(n log(n))</strong> . It is a <strong>static</strong> method that parses an <strong>array</strong> as a parameter and does not return anything. We can invoke it directly by using the class name. It accepts an array of type int, float, double, long, char, byte.</p> <p> <strong>Syntax:</strong> </p> <pre> public static void sort(int[] a) </pre> <p>Where <strong>a</strong> is an array to be short.</p> <h4>Note: Like the Arrays class, the Collections class also provides the sort() method to sort the array. But there is a difference between them. The sort() method of the Arrays class works for primitive type while the sort() method of the Collections class works for objects Collections, such as LinkedList, ArrayList, etc.</h4> <p>We can perform sorting in the following ways:</p> <ul> <tr><td>Ascending Order</td> or <strong>Alphabetical Order</strong> or <strong>Natural Order</strong>  </tr><tr><td>Descending Order</td> or <strong>Reverse Natural Order</strong>  </tr></ul> <h3>Sort String Array in Ascending Order or Alphabetical Order</h3> <p>The <strong>ascending order</strong> arranges the elements in the lowest to highest order. It is also known as <strong>natural order</strong> or <strong>alphabetical order</strong> .</p> <p>Let&apos;s sort an array using the sort() method of the Arrays class.</p> <p> <strong>SortStringArrayExample2.java</strong> </p> <pre> import java.util.Arrays; public class SortStringArrayExample2 { public static void main(String args[]) { //defining an array of type string String[] countries = {&apos;Wood apple&apos;, &apos;Blackberry&apos;, &apos;Date&apos;, &apos;Naseberry&apos;, &apos;Tamarind&apos;, &apos;Fig&apos;, &apos;Mulberry&apos;, &apos;Apple&apos;, &apos;Plum&apos;, &apos;Orange&apos;, &apos;Custard apple&apos;, &apos;Apricot&apos;}; //sorts string array in alphabetical order or ascending order Arrays.sort(countries); //prints the sorted string array in ascending order System.out.println(Arrays.toString(countries)); } } </pre> <p> <strong>Output:</strong> </p> <pre> [Apple, Apricot, Blackberry, Custard apple, Date, Fig, Mulberry, Naseberry, Orange, Plum, Tamarind, Wood apple] </pre> <h3>Sort String Array in Descending Order or Reverse Natural Order</h3> <h3>Using the reverseOrder() Method</h3> <p>Java <strong>Collections</strong> class provides the <strong>reverseOrder()</strong> method to sort the array in reverse-lexicographic order. It is a static method, so we can invoke it directly by using the class name. It does not parse any parameter. It returns a <strong>comparator</strong> that imposes the reverse of the natural ordering (ascending order).</p> <p>It means that the array sorts elements in the ascending order by using the sort() method, after that the reverseOrder() method reverses the natural ordering, and we get the sorted array in descending order.</p> <p> <strong>Syntax:</strong> </p> <pre> public static Comparator reverseOrder() </pre> <p>Suppose, a[] is an array to be sort in the descending order. We will use the reverseOrder() method in the following way:</p> <pre> Arrays.sort(a, Collections.reverseOrder()); </pre> <p>Let&apos;s sort a string array in the descending order.</p> <p> <strong>SortStringArrayExample3.java</strong> </p> <pre> import java.util.*; public class SortStringArrayExample1 { public static void main(String args[]) { //defining an array of type String String[] countries = {&apos;Zimbabwe&apos;, &apos;South-Africa&apos;, &apos;India&apos;, &apos;America&apos;, &apos;Yugoslavia&apos;, &apos; Australia&apos;, &apos;Denmark&apos;, &apos;France&apos;, &apos;Netherlands&apos;, &apos;Italy&apos;, &apos;Germany&apos;}; //sorts array in descending order Arrays.sort(countries, Collections.reverseOrder()); //prints the sorted string array in descending order System.out.println(Arrays.toString(countries)); } } </pre> <p> <strong>Output:</strong> </p> <pre> [Zimbabwe, Yugoslavia, South-Africa, Netherlands, Italy, India, Germany, France, Denmark, America, Australia] </pre> <hr></size-1;>

Korištenje metode Arrays.sort().

U Javi, Nizovi je klasa definirana u paketu java.util koja pruža vrsta() metoda za sortiranje niza uzlaznim redoslijedom. Koristi se Dual-Pivot Quicksort algoritam za sortiranje. Njegova složenost je O(n log(n)) . To je statički metoda koja analizira an niz kao parametar i ne vraća ništa. Možemo ga pozvati izravno korištenjem naziva klase. Prihvaća niz tipa int, float, double, long, char, byte.

Sintaksa:

 public static void sort(int[] a) 

Gdje a je niz koji treba biti kratak.

Napomena: Poput klase Arrays, klasa Collections također nudi metodu sort() za sortiranje niza. Ali među njima postoji razlika. Metoda sort() klase Arrays radi za primitivni tip, dok metoda sort() klase Collections radi za objekte Collections, kao što su LinkedList, ArrayList, itd.

Sortiranje možemo izvršiti na sljedeće načine:

treći normalni oblik
    Uzlazni poredakili Abecedni red ili Prirodni poredak Silazni poredakili Obrnuti prirodni poredak

Sortiraj niz nizova uzlaznim ili abecednim redoslijedom

The uzlazni redoslijed slaže elemente od najnižeg do najvišeg reda. Također je poznat kao prirodni poredak ili abecedni red .

Razvrstajmo niz koristeći metodu sort() klase Arrays.

SortStringArrayExample2.java

 import java.util.Arrays; public class SortStringArrayExample2 { public static void main(String args[]) { //defining an array of type string String[] countries = {&apos;Wood apple&apos;, &apos;Blackberry&apos;, &apos;Date&apos;, &apos;Naseberry&apos;, &apos;Tamarind&apos;, &apos;Fig&apos;, &apos;Mulberry&apos;, &apos;Apple&apos;, &apos;Plum&apos;, &apos;Orange&apos;, &apos;Custard apple&apos;, &apos;Apricot&apos;}; //sorts string array in alphabetical order or ascending order Arrays.sort(countries); //prints the sorted string array in ascending order System.out.println(Arrays.toString(countries)); } } 

Izlaz:

 [Apple, Apricot, Blackberry, Custard apple, Date, Fig, Mulberry, Naseberry, Orange, Plum, Tamarind, Wood apple] 

Sortiraj niz nizova silaznim ili obrnutim prirodnim redoslijedom

Korištenje metode reverseOrder().

Java Zbirke klasa pruža obrnuti redoslijed() metoda za sortiranje niza obrnutim leksikografskim redoslijedom. To je statična metoda, tako da je možemo pozvati izravno korištenjem naziva klase. Ne analizira niti jedan parametar. Vraća a komparator koji nameće obrnuti prirodni poredak (uzlazni poredak).

To znači da niz razvrstava elemente u uzlaznom redoslijedu metodom sort(), nakon toga metoda reverseOrder() obrće prirodni poredak, te dobivamo sortirani niz u silaznom redoslijedu.

Sintaksa:

 public static Comparator reverseOrder() 

Pretpostavimo da je a[] polje koje treba sortirati silaznim redoslijedom. Koristit ćemo metodu reverseOrder() na sljedeći način:

 Arrays.sort(a, Collections.reverseOrder()); 

Razvrstajmo niz znakova silaznim redoslijedom.

java else if

SortStringArrayExample3.java

 import java.util.*; public class SortStringArrayExample1 { public static void main(String args[]) { //defining an array of type String String[] countries = {&apos;Zimbabwe&apos;, &apos;South-Africa&apos;, &apos;India&apos;, &apos;America&apos;, &apos;Yugoslavia&apos;, &apos; Australia&apos;, &apos;Denmark&apos;, &apos;France&apos;, &apos;Netherlands&apos;, &apos;Italy&apos;, &apos;Germany&apos;}; //sorts array in descending order Arrays.sort(countries, Collections.reverseOrder()); //prints the sorted string array in descending order System.out.println(Arrays.toString(countries)); } } 

Izlaz:

 [Zimbabwe, Yugoslavia, South-Africa, Netherlands, Italy, India, Germany, France, Denmark, America, Australia]