Sobes.tech
Junior — Middle

Felsorolnád a Java nyelvben használt rendezési algoritmusokat, és röviden leírnád azok jellemzőit?

sobes.tech MI

Válasz az MI-től

Java-ban különböző algoritmusokat használnak tömbök és gyűjtemények rendezésére, az adatok típusától és a JDK verziójától függően:

  • Arrays.sort() primitív típusokhoz (int, long, double stb.) — a Dual-Pivot Quicksort algoritmust használja. Ez egy gyors rendezés fejlesztésekkel, átlagos komplexitása O(n log n), de a legrosszabb esetben O(n²)-re romolhat.

  • Arrays.sort() objektumokhoz (pl. Integer, String) — 7-es Java-tól kezdve a TimSort-ot használja, amely egy hibrid algoritmus, amely összeolvasásra és beszúrásra épül. Stabil és hatékony részben rendezett adatok esetén.

  • Collections.sort() — belsőleg az Arrays.sort()-ot hívja meg listákhoz, TimSort-ot használva.

Jellemzők:

  • A Dual-Pivot Quicksort gyorsabb, mint a klasszikus Quicksort, de nem stabil.
  • A TimSort stabil, és jól működik már részben rendezett adatokon.

Használati példa:

int[] arr = {5, 3, 8, 1};
Arrays.sort(arr); // Dual-Pivot Quicksort int-hez

List<String> list = Arrays.asList("banana", "apple", "pear");
Collections.sort(list); // TimSort objektumokhoz