1
resposta

[Dúvida] Algoritmo de Ordenação

Olá,

Após acompanhar o curso sobre listas, fiquei com dúvida a respeito de como o Java faz para ordená-las.

Durante as aulas é feita uma rápida busca no Java Docs de como funciona o algoritmo de ordenação de valores, onde:

se o valor x é maior que y, retorna 1; se os valores foram iguais, retorna 0; e se x for menor que y, retorna -1.

O Paulo até menciona que esse processo de retornar valores numéricos da comparação "vem de coisa antiga do Java", mas foi apenas um comentário e ele não se aprofundou nesse ponto. Tentei entender mais a fundo esse processo e fui direto no método compareTo da Classe Integer, mas o algoritmo segue a mesma lógica.

Entendi a lógica de diferenciar valores, mas ao mesmo tempo achei um algoritmo muito simples e não muito claro sobre como depois de diferencia-los, ele os organiza em um array ou lista. Há mais passos nesse processo que eu não reparei ? é um processo feito internamente pela JVM no momento da compilação do código ?

1 resposta

Boa tarde!

Se voce quiser saber um pouco mais de como funciona a ordenacao padrao voce pode dar uma olhada nas docs do Java, vou colocar um trecho aqui para voce.

public static void sort(int[] a)

//Sorts the specified array into ascending numerical order.

//Implementation note: The sorting algorithm is a Dual-Pivot Quicksort by Vladimir Yaroslavskiy, Jon Bentley, and Joshua Bloch. 
//This algorithm offers O(n log(n)) performance on many data sets that cause other quicksorts to degrade to quadratic performance, and is typically faster than traditional (one-pivot) Quicksort implementations.

Implementation note: The sorting algorithm is a Dual-Pivot Quicksort by Vladimir Yaroslavskiy, Jon Bentley, and Joshua Bloch.

A ordenacao utilizada por baixo dos panos pela biblioteca Collections do Java eh esta.