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 ( de acordo com a) 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)