Foros del Web » Programación para mayores de 30 ;) » Java »

Duda Principiante

Estas en el tema de Duda Principiante en el foro de Java en Foros del Web. Hola, soy MUY principiante en Java (estoy aprendiendo en la universidad), y en base a un ejercicio que nos dieron los profesores, me surgió una ...
  #1 (permalink)  
Antiguo 10/04/2006, 18:06
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 10 meses
Puntos: 28
Duda Principiante

Hola, soy MUY principiante en Java (estoy aprendiendo en la universidad), y en base a un ejercicio que nos dieron los profesores, me surgió una duda.

El ejercicio era:
"Recibir 4 valores y retornarlos ordenados de menor a mayor."

Eso lo pude resolver:

Código:
import java.util.*;

public class Orden{
  public static void main(String[] args){
	int num=0;
	int min=Integer.MIN_VALUE;
	int max1=Integer.MIN_VALUE;
	int max2=Integer.MIN_VALUE;
	int max3=Integer.MIN_VALUE;

	Scanner in = new Scanner (System.in);

	for (int i=1; i<=4; i++){
		System.out.println("Ingrese el numero "+i+" de 4:");
		num = in.nextInt();
		if (num>max1){
			if (num>max2){
				if (num>max3){
					min = max1;
					max1 = max2;
					max2 = max3;
					max3 = num;
				}else{
					min = max1;
					max1 = max2;
					max2 = num;
				}
			}else{
				min = max1;
				max1 = num;
			}
		}else{
			min = num;
		}
	}	

	String orden = min+", "+max1+", "+max2+", "+max3;

	System.out.println(orden);
  }
}
Pero me surgió la duda de cómo hubiera sido si me hubieran pedido:
"Recibir X valores y retornarlos ordenados de menor a mayor."

Realmente lo pensé, pero no se me ocurre ninguna solución (aunque quizá sea tan evidente que por eso no la vea! )...


Bueno, espero alguna respuesta y te agradezco por leer esto!
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #2 (permalink)  
Antiguo 11/04/2006, 00:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Bueno, la solución que muestras funciona para un numero determinado (conocido) de numero y no es escalable, ya que el numero de if/elses crecerá exponencialmente.
Lo suyo sería irlos introduciendo en alguna estructura que pueda ir creciendo e irlos colocando en su sitio a medida que entran. Para encontrar el sitio donde colocar un nuevo numero de la forma mas eficiente hay diferentes algoritmos de ordenación (busqueda secuencial, divide y venceras....) que te deberían enseñar o haber enseñado al dar estructuras de datos .

Una busqueda en Google sobre "algoritmos de ordenacion" te mostrará mucha información.
  #3 (permalink)  
Antiguo 11/04/2006, 07:05
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 10 meses
Puntos: 28
Gracias GreenEyed, encontre algo e intenté hacer una prueba y me esta dando un error... a ver si alguien sabe que puede ser que este pasando!

Código:
import java.util.*;

public class Prueba{
  public static void main(String[] args){

int array[N];
int i,j,menor,aux;

// Dar valores a los elementos del array

for(i=0;i<N-1;i++)
{
  for(j=i+1,menor=i;j<N;j++)
  if(array[j]<array[menor]) // Si el elemento j es menor que el menor:
    menor=j; // el menor pasa a ser el elemento j.
  aux=array[i]; // Se intercambian los elementos
  array[i]=array[menor]; // de las posiciones i y menor
  array[menor]=aux; // usando una variable auxiliar.
}


	System.out.println(array);
  }
}

El error que me da es algo como:

Prueba.java:9: ']' expected
int array[N];

gracias a todos
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #4 (permalink)  
Antiguo 11/04/2006, 12:04
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Código:
int array[N];
esta declaracion es errónea.
Debería ser:

Código:
int [] array = new int[N]; 
//siempre y cuando N este declarado y se le haya asigando algun valor
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #5 (permalink)  
Antiguo 11/04/2006, 12:13
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 10 meses
Puntos: 28
Ya lo probaré... gracias TolaWare!
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:22.