AULA DE 31/08

RAUL H.C. LOPES

1. O exercício da prova

A pesquisa no array deve ser realizada como uma pesquisa em um retângulo delimitado por: linha i à linha p e coluna q à coluna j. Assumindo que o array S tem m linhas e n colunas, a invariante seria:

0 ≤ i ≤ p < m ∧ 0 ≤ q ≤ j < n ∧ x ∈ S.i..p.q..j

Esse retângulo deve ser diminuído por um loop cujas transições decrementam j ou incrementam i:

• i é incrementado quando S.i.j < x;

• j é decrementado quando x < S.i.j. Complexidade: O(m + n)

2. A ordenação proposta na aula

• Invariante: no passo i a seqüência está ordenada, se considerarmos os bits 0 a i − 1 de cada chave. Por exemplo, dada a seqüência

[9, 8, 5, 4]

quando i = 3 as chaves ordenadas pelos bits 0..2 ficam na ordem

[8, 9, 4, 5]

Nesse passo as chaves com bit 3 igual a 0 (4,5) são levadas para a esquerda e as outras (8,9) são levadas para a direita. Ao final desse passo a seqüência estará ordenada.

• Complexidade.

Serão executados d passos onde d é o número de bits dos itens a ordenar. A separação das chaves usará a operação sc para calcular o endereço de cada chave.