Minha função do exercício 2 O. Considerei que se todos os elementos forem maiores ou iguais ao primeiro, ou se todos forem menores que o último, isso seria um vetor arrumado; e um vetor V[p...r-1]. Não gostei muito ela, achei que ficou meio 'feia' e provavelmente dá para fazer sem esse vetor auxiliar, mantendo O
, mas não pensei em outra forma.
int arrumado(int v[], int p, int r) {
int vAux[r-p];
int max;
int min;
int cont;
for (cont = 0; cont < r - p; cont++) {
if (cont == 0) {
max = v[cont + p];
vAux[cont] = TRUE;
}
else {
if (v[cont + p] >= max) {
vAux[cont] = TRUE;
max = v[cont + p];
}
else
vAux[cont] = FALSE;
}
}
for (cont = (r - p - 1); cont > -1; cont--) {
if (cont == (r - p - 1))
min = v[cont+p];
else {
if (v[cont+p] >= min)
vAux[cont] = FALSE;
else
min = v[cont];
}
if (vAux[cont+p])
return (cont+p);
}
return -1;
}