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