Java - Ordenar arreglo de forma personalizada

 
Vista:
sin imagen de perfil

Ordenar arreglo de forma personalizada

Publicado por Brayan (1 intervención) el 23/07/2021 22:33:56
Buenas tardes.

Estoy empezando en Java y tengo el siguiente ejercicio:

A partir de un vector de Longitud PAR, ordenar la primera mitad de los valores de forma ascendente y la segunda mitad de los valores deben estar ordenados de forma descendente

Para ello debo hacer una función ordenamientoPersonalizado() recibe como parámetro un vector de números enteros de longitud PAR, debo retornar el vector ordenado de la siguiente manera:

Ejemplo de entrada:

int [] vectorEntrada = {0, 2, 1, 65, 66, 78, 12, 11, 90, 13};

Salida (Retorno):

int [] vectorEntradaOrdenado = {0, 1, 2, 65, 66, 90, 78, 13, 12, 11};

Explicación:

El vector tiene 10 elementos, los primeros 5 elementos son: 0, 2, 1, 65, 66, ordenados de manera ascendente: 0, 1, 2, 65, 66

Los otros 5 elementos del vector son: 78, 12, 11, 90, 13, ordenados de manera descendente: 90, 78, 13, 12, 11

<Tengo el siguiente código hasta el momento>

public static void main(String[] args) {

int[] vectorEntrada = {1, 3, 2, 4, 5, 78, 12, 11, 90, 13};
int[] orden = ordenamientoPersonalizado(vectorEntrada);
}

public static int[] ordenamientoPersonalizado(int[] vector) {
int[] vectorOrdenado = new int[vector.length];
for (int i = 0; i < vectorOrdenado.length - 1; i++) {
for (int j = i + 1; j < vectorOrdenado.length / 2; j++) {
int auxiliar;
vectorOrdenado[j] = vector[i];
if (vectorOrdenado[i] > vectorOrdenado[j]) {
// Intercambiar
auxiliar = vectorOrdenado[i];
vectorOrdenado[i] = vectorOrdenado[j];
vectorOrdenado[j] = auxiliar;
}
}
}
System.out.println("Orden mitad 1");
for (int i = 0; i < vectorOrdenado.length/2; i++) {
System.out.println(vectorOrdenado[i]);
}
return vectorOrdenado;
}

Me ordena la primera mitad, pero sólo toma 4 valores y agrega un 0 al primer índice, así {0, 0, 1, 2, 65}

¿Qué estoy haciendo mal? Y cómo puedo ordenar la segunda mitad. ¡Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Diego

Ordenar arreglo de forma personalizada

Publicado por Diego (3 intervenciones) el 24/07/2021 20:31:54
¡Hola Brayan!
No entiendo del todo el doble bucle pero si es seguro que te falta definir el valor vectorOrdenado[0].

Creo que esta actividad es más fácil dividiendo la actividad en tres partes:

Parte1: ordenar un conjunto de números de menor a mayor.
1º) Copia el array original en un ArrayList.
Dentro de un bucle, mientras la longitud de este arraylist es >0, realizas los siguientes pasos:
2º) Calcula el menor de todos los números de este arraylist.
3º) Lo guardas en el nuevo array ordenado.
4º) Eliminas este valor menor del arraylist y se repite el bucle.
Cuando hayas eliminado todos los números del arraylist, sales del bucle y tendrás en un nuevo array todos los números ordenados de menor a mayor.

Parte 2: de forma análoga puedes ordenar un conjunto de números de mayor a menor.

Parte 3: finalmente une los dos arrays ordenados.

Espero que esta explicación sea útil para ti.
¡Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar