Algoritmos e Estruturas de Dados

Lista de Exercícios 3

Data de Distribuição: 21 de maio de 1999

Data de Entrega: 11 de junho de 1999

Orientações:

  1. A entrada e' "d" sequencias de elementos tal que cada sequencia ja' esta' ordenada, e ha' um total de n elementos.Implemente um algoritmo que mescle(faca a uniao de) todas as sequencias em uma unica sequencia ordenada em O(n*log d).. (2,5)
  2. Dado dois conjuntos S1 e S2, e um numero real x,descubra se existe um elemento de S1 e um elemento de S2 cuja soma e' exatamente x.Seu algoritmo deve rodar num tempo de O(nlogn), onde n e' o numero total de elementos em ambos os conjuntos. (2,5)
  3. Implementar a versao mediana de tres do quicksort. Nessa versao, definimos o pivot como sendo o valor do "meio" entre o primeiro elemento, o ultimo e o localizado na metade do conjunto a ser ordenado. (2,5)
  4. A entrada e' uma sequencia x1,x2,....,xn de inteiros numa ordem arbitra'ria , e uma outra sequencia a1,a2,....,an de inteiros distintos de 1 ate' n(ou seja, a1,a2...,an e' uma permutacao de 1,2,...,n).Ambas as sequencias sao dadas como arrays.Implemente um algoritmo de ordem O(nlogn) para ordenar imposto pela permutacao.Em outras palavras,para cada "i",xi deve aparecer na posicao dada em ai.Por exemplo,se x=17,6,2,9, e a=3,2,4,1, entao a saida deve ser x=9,6,17,2.O algoritmo deve ser `in place`, entao voce nao pode usar um array adicional. (2,5)