
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!
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


0