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.
int busca_ternaria (int v, int ini, int fim, int x);Sua função deve devolver 1 se x aparece no vetor, 0 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, procurando-o recursivamente nesta parte.
A + B * C - ( D - E / F + G ) / H + Iem notação prefixa ficaria:
- + A * B C + / + - D / E F G H IEscreva 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.
15 27 3 18 7 11 22 19 9 10 1 5 8 14
17 10 7 23 15 3 1 20 8 4Indique na sua simulação as comparações que estão sendo feitas e o resultado de cada chamada do separa. Quantas chamadas do separa foram feitas neste caso? Quantas auto-chamadas o quicksort (recursivo) para o vetor acima geraria?
void alteraChave (int x, int i, int n, intv[]);que recebe um heap em v[1..n] e altera a chave do elemento i para x, rearranjando v para que continue um heap.
void removeHeap (int i, int *n, intv[]);que recebe um heap em v[1..*n] e remove o elemento v[i] do heap, rearranjando v para que continue um heap.