Developer Toolbox

Heapsort

Organiza a lista em um heap, uma árvore em que cada pai é maior que seus filhos. Depois leva o maior valor para o fim, repetidas vezes.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(1)
  • não
  • sim
  • comparando
  • movendo
  • na posição final
0 / 299 passos
Comparações Trocas

Clique em reproduzir: as linhas mostram como o custo cresce

Clique em reproduzir ou avance passo a passo pelo algoritmo.

Espaço: reproduzir ou pausar. Setas esquerda e direita: avançar passo a passo. Home e End: pular.

Experimente: Escolha uma lista invertida. Montar o heap quase não exige trocas; depois, cada rodada leva o maior valor para o fim.

Como funciona

O heap fica guardado na própria lista: o valor na posição i tem os filhos nas posições 2i+1 e 2i+2, e o maior valor fica sempre na frente. Ele é trocado com o do fim, o heap diminui uma posição e é consertado. A parte ordenada cresce a partir da direita.

Quando é uma boa escolha

Quando você precisa de uma velocidade que continua boa mesmo no pior caso, sem memória extra, por exemplo em aparelhos pequenos. Em média é mais lento que o quicksort, por isso costuma ser usado como plano B.