Em java como verificar se um vetor esta em ordem crescente, decrescente ou ordenado?

1 Resposta

  • 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.

Clique aqui para adicionar a sua resposta.