MAC122 - Lista 2 - Pilhas, recurs�o e ordena��o

  1. Escreva uma fun��o recursiva com cabe�alho
       int maximo (int v[], int ini, int fim);
    
    que devolve o maior valor do vetor entre as posi��es ini e fim. Use uma estrat�gia como a do mergesort (divis�o e conquista): divida o vetor ao meio, chame a fun��o recursivamente para cada uma das metades, depois "junte" as respostas.
  2. Escreva uma fun��o recursiva com cabe�alho
      int maxmin (int v[], int n, int *max, int *min);
    
    que devolve o maior valor do vetor em *max e o menor em *min.
  3. Escreva uma fun��o recursiva busca_tern�ria com o seguinte cabe�alho:
       int busca_ternaria (int v, int ini, int fim, int x);
    
    Sua fun��o deve devolver 1 se x aparece no vetor, 0 em caso contr�rio. Inspire-se na busca bin�ria. Na busca tern�ria, voc� deve dividir o vetor em tr�s (em vez de em dois), comparar o x com os dois elementos separadores dessas tr�s partes e, ou encontra x, ou decide em qual das partes ele pode estar. Procura recursivamente nesta parte.
  4. Simule o algoritmo mergesort com o seguinte vetor de entrada:
       15  27  3  18  7  11  22  19  9  10  1  5  8  14
    
  5. Encontre um vetor com 10 elementos que faz o mergesort fazer o maior n�mero poss�vel de trocas.
  6. Nota��o prefixa � definida de forma semelhante a nota��o posfixa. Na nota��o prefixa, os operadores aparecem antes de seus operandos. Assim, por exemplo, a express�o
       A + B * C - ( D - E / F + G) / H + I
    
    em nota��o prefixa ficaria:
       - + A * B C + / + - D / E F G H I
    
    Escreva uma fun��o recursiva que calcula o valor de uma express�o prefixa. Suponha que exista uma fun��o
       int valor (char ch); 
    
    que, dada uma letra, devolve o valor da vari�vel correspondente �quela letra.

Last modified: Thu May 16 12:06:12 EST 2002