Junior — Middle
Podes listar os algoritmos de ordenação usados na linguagem Java e descrever brevemente as suas características?
sobes.tech IA
Resposta da IA
Em Java, diferentes algoritmos são usados para ordenar arrays e coleções, dependendo do tipo de dados e da versão do JDK:
-
Arrays.sort() para tipos primitivos (int, long, double, etc.) — usa o algoritmo Dual-Pivot Quicksort. É uma ordenação rápida com melhorias, com complexidade média de O(n log n), mas no pior caso pode degradar para O(n²).
-
Arrays.sort() para objetos (por exemplo, Integer, String) — desde Java 7, usa TimSort, um algoritmo híbrido baseado em fusões e inserções. É estável e eficiente para dados parcialmente ordenados.
-
Collections.sort() — chama internamente Arrays.sort() para listas, usando TimSort.
Características:
- Dual-Pivot Quicksort é mais rápido que o Quicksort clássico, mas não é estável.
- TimSort é estável e funciona bem com dados parcialmente ordenados.
Exemplo de uso:
int[] arr = {5, 3, 8, 1};
Arrays.sort(arr); // Quicksort de pivô duplo para int
List<String> list = Arrays.asList("banana", "apple", "pear");
Collections.sort(list); // TimSort para objetos