Escolar Documentos
Profissional Documentos
Cultura Documentos
lista de exercı́cios 06
1 n 1 k n
x ⇒ x
| {z } | {z }
<x >x
E imagine que depois nós ordenamos os dois lados da partição usando o algoritmo da bolha
1 k n
x
2. Ordenação-2n/3
Imagine que nós ordenamos os primeiros 2n/3 elementos da lista L usando o algoritmo da
bolha
1 2n/3 n
Daı́, nós ordenamos os últimos 2n/3 elementos da lista usando o algoritmo da bolha
1 n/3 n
Finalmente, nós ordenamos os primeiros 2n/3 elementos da lista outra vez usando o
algoritmo da bolha
1 2n/3 n
1
3. Ordenação par-ı́mpar
Uma outra ideia para tornar o algoritmo da bolha mais eficiente consiste em acelerar o
procedimento Varredura().
Quer dizer, a ideia consiste em comparar elementos à distância 2 — (e trocá-los de posição,
se necessário)
L x y
y < x : troca
Na prática, isso corresponde a fazer a varredura primeiro sobre as posições pares, e depois
sobre as posições ı́mpares.
E daı́, se a gente executa o algoritmo da bolha com essa versão do procedimento Varredura()
- o algoritmo ordena as posições pares da lista em separado
- e ordena as posições ı́mpares da lista em separado
1 3 5 ... n-1
2 4 6 ... n
Finalmente, nós podemos aplicar a varredura tradicional repetidamente, até que a lista
fique completamente ordenada
1 n
a) Analise o tempo de execução desse algoritmo no melhor caso para a segunda etapa.
b) Analise o tempo de execução desse algoritmo no pior caso para a segunda etapa.
4. Ordenação borboleta
Imagine que nós ordenamos as duas metades da lista L usando o algoritmo da bolha
1 n/2 n
2
sempre trocando os elementos de posição, quando o elemento da esquerda é maior do que
o elemento da direita.
Finalmente, nós ordenamos as duas metades da lista outra vez usando o algoritmo da
bolha
1 n/2 n
√
5. Outra ordenação- n
√
Imagine que nós ordenamos blocos de tamanho n da lista L usando o algoritmo da bolha
1 n
√ √ √
n n n
1 n
| {z } | {z } | {z }
1o elemento 2o elemento último elemento
de cada bloco de cada bloco de cada bloco
3
7. Busca na lista infinita
...
onde só o que isso quer dizer é que nós não temos a menor ideia de qual é o seu tamanho.
Além disso, imagine que nós queremos saber se o número k está na lista ou não.
Bom, como nós não sabemos o tamanho da lista, nós não podemos calcular a posição
central.
E como nós não podemos calcular a posição central, nós não podemos fazer a busca binária.
Mas, será que você consegue de fazer uma busca inteligente nessa lista?
Apresente o algoritmo mais eficiente que você conseguir para verificar se o número k está
presente na lista ou não.
8. Mediana
1 n
U
1 n
V