Filas de prioridade e heaps

Forma completa, prioridade entre pai e filhos, construção linear e retirada do extremo.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Dois invariantes

Max-heap junta forma completa e pai maior ou igual aos filhos. Vetor guarda por níveis sem buracos. Raiz é o máximo; o resto não está ordenado.

Com n>0 elementos, os filhos de i são 2*i+1 e 2*i+2. O pai de i>0 é (i-1)/2 com divisão inteira. A altura é ⌊log⁡2n⌋\lfloor\log_2 n\rfloor.

Subir e descer

  • Novo entra no fim e sobe enquanto exceder o pai.
  • Saída guarda a raiz, traz o último para o topo e desce pelo maior filho.
  • Só o nó mexido pode violar a ordem. Consulta O(1)O(1); alteração O(log⁡n)O(\log n).

Constrói de baixo para cima, dos últimos pais até à raiz:

  1. Entrada
    4911247
    Começa no índice 2.
  2. Pais 2 e 1
    4127941
    Trocas locais resolvem cada um.
  3. Raiz
    1297441
    Desce dois níveis.
Cada pai desce com os filhos já tratados.

Construção Θ(n)\Theta(n). Inserir um a um pode dar O(nlog⁡n)O(n\log n).

Ordenar e pedir à biblioteca

  • Heapsort troca raiz com o fim ativo e reduz. Pior O(nlog⁡n)O(n\log n), auxiliar O(1)O(1), sem estabilidade.
  • priority_queue é max por omissão. top exige não vazio; pop não devolve.
  • Mínimo de max-heap está numa folha, mas não necessariamente na mais funda. Procurar custa O(n)O(n).
  • Prioridade com índice conhecido sobe ou desce em O(log⁡n)O(\log n). Achar a posição pode custar O(n)O(n).

Top-k maiores usa min-heap de tamanho k. Cordas [4,3,2,6] pagam 5, depois 9, depois 15: total 29.

Provas e código.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.