Int x, status = 0; int vet[] = {1, 2, 3, 4, 5}; //Testar com 5, 4, 3, 2, 1 e 1, 2, 3, 5, 4
x = vet[0];
if (vet.length > 1) { //*ponto crítico aqui* if (x >= vet[1]) status = -1; else status = 1; }
for (int i = 0; i < vet.length; i++) { if (x <= vet[i] && status == 1) { x = vet[i]; continue; } else if (x >= vet[i] && status == -1) { x = vet[i]; continue; } else { status = 0; break; } }
O que algoritmo faz? Ele basicamente compara o vet[i - 1] (com i > 0) com vet[i] para ver se o elemento anterior foi menor ou maior que o atual e confere o status da ordem (1 = crescente até o momento, -1 = decrescente até o momento). Se o status muda, então é porque está desordenado.
Precisa delimitar o tamanho o vetor. Porque se o tamanho dele é igual a 1, não podemos afirmar que está ordenado ou desordenado. Em todo caso, meu algoritmo assume desordenado.
kellysouzacristine
Int x, status = 0;
int vet[] = {1, 2, 3, 4, 5}; //Testar com 5, 4, 3, 2, 1 e 1, 2, 3, 5, 4
x = vet[0];
if (vet.length > 1) { //*ponto crítico aqui*
if (x >= vet[1])
status = -1;
else
status = 1;
}
for (int i = 0; i < vet.length; i++) {
if (x <= vet[i] && status == 1) {
x = vet[i];
continue;
} else if (x >= vet[i] && status == -1) {
x = vet[i];
continue;
} else {
status = 0;
break;
}
}
O que algoritmo faz?
Ele basicamente compara o vet[i - 1] (com i > 0) com vet[i] para ver se o elemento anterior foi menor ou maior que o atual e confere o status da ordem (1 = crescente até o momento, -1 = decrescente até o momento). Se o status muda, então é porque está desordenado.
Precisa delimitar o tamanho o vetor. Porque se o tamanho dele é igual a 1, não podemos afirmar que está ordenado ou desordenado. Em todo caso, meu algoritmo assume desordenado.