Sobes.tech
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