Compruebe si el arreglo está ascendiendo.
Tengo un array de Java int[] field = new int[9]
que se ve así: {1,2,3,4,5,6,7,8,9,0}.
En un método public static boolean isSorted(int[] field, boolean isAscending)
quiero comprobar si el array está ordenado en orden ascendente o descendente. He intentado lo siguiente:
boolean fetch = false;
if(field == null){
fetch = false;
}
else if(isAscending){
for(int i = 0; i < (field.length-1); i++){
if(field[i] > field[i+1])
fetch = false;
else
fetch = true;
}
}
else if(!isAscending){
for(int i = 0; i <= (field.length); i++){
if(field[i] < field[i+1])
fetch = false;
else
fetch = true;
}
}
return fetch;
}
Sin embargo, al aplicar este método al array mencionado anteriormente, obtengo dos resultados diferentes cuando se pasa el parámetro isAscending
una vez verdadero y otra vez falso al método. El resultado debería ser falso para ambos casos porque hay números ascendentes y descendentes en el array al mismo tiempo. Sé que el problema radica en la estructuración del código.
¿Cómo puedo mejorar esto y obtener el resultado deseado?
davy.ai
Para mejorar el código y obtener el resultado deseado, se puede modificar el código de la siguiente manera:
En el código modificado, si el array
field
es nulo, el método devolverá falso. No se requiere ningún procesamiento adicional. SiisAscending
es verdadero, el método verifica si cada elemento es menor o igual al siguiente elemento. Si algún elemento es mayor que el siguiente elemento, el método devuelve falso. SiisAscending
es falso, el método verifica si cada elemento es mayor o igual al siguiente elemento. Si algún elemento es menor que el siguiente elemento, el método devuelve falso. Finalmente, si no se encuentra ningún problema, devuelve verdadero.Este código asegura que el array se verifique correctamente independientemente del orden, y proporciona el resultado deseado.