Pular para conteúdo

Como Ler os Exemplos

Código e pseudocódigo cumprem propósitos diferentes neste site.

Java executável

Um bloco identificado como Java deve compilar em uma classe adequada, com os imports exibidos ou implícitos no exemplo. Métodos públicos validam pré-condições quando isso esclarece o contrato. Auxiliares privados podem presumir que o chamador já as estabeleceu.

static int midpoint(int low, int high) {
    if (low < 0 || high < low) {
        throw new IllegalArgumentException("invalid range");
    }
    return low + (high - low) / 2;
}

Pseudocódigo

O pseudocódigo enfatiza o algoritmo, não a sintaxe. A atribuição usa , intervalos semiabertos usam [from, to) e resultado ausente é NOT_FOUND.

Convenções de complexidade

  • n é a quantidade de elementos, salvo definição diferente.
  • Grafos usam V vértices e E arestas.
  • Espaço significa pico de espaço auxiliar, sem incluir entrada e saída, salvo declaração diferente.
  • Limites esperados, amortizados, médios e de pior caso não são intercambiáveis.
  • Operações de tabela hash têm custo esperado O(1) sob o modelo declarado, não tempo constante incondicional.

Diagramas e rastros

Diagramas ajudam a intuição, mas não são provas. Um argumento identifica um invariante, prova sua preservação e conecta o término ao resultado desejado.