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

Manera mas optima de buscar el minimo!

Estas en el tema de Manera mas optima de buscar el minimo! en el foro de Programación General en Foros del Web. Hola, estoy creando una funcion que me devuelve el valor minimo sobre tres posiciones de una matriz. El algoritmo creado por mi es: int a,b,c; ...
  #1 (permalink)  
Antiguo 01/03/2010, 17:35
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Manera mas optima de buscar el minimo!

Hola, estoy creando una funcion que me devuelve el valor minimo sobre tres posiciones de una matriz.

El algoritmo creado por mi es:

int a,b,c;

si (a<=b) AND (a<=c) minimo=a;
si (b<=a) AND (b<=c) minimo=b;
si (c<=a) AND (c<=b) minimo=c;

El caso es que me interesa traducir este codigo a lenguaje maquina y por eso me gustaria simplificarlo al maximo. Se les ocurre un algortimo mas simple para esto?

Saludos y gracias!
  #2 (permalink)  
Antiguo 01/03/2010, 19:00
Avatar de RusO91  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 91
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Manera mas optima de buscar el minimo!

minimo := matriz[1]
PARA I := 2 a (longitud de la matriz) HACER
SI matriz[I] es menor a minimo ENTONCES minimo := matriz[I]

si no se entiende avisame

salu2

Última edición por RusO91; 02/03/2010 a las 09:28
  #3 (permalink)  
Antiguo 01/03/2010, 20:24
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Respuesta: Manera mas optima de buscar el minimo!

No lo entiendo, se recorre una matriz que se va comparando con una variable inicializada con el primer valor de la matriz.

Si pudieras explicarmelo te lo agradeceria.


Saludos y gracias.
  #4 (permalink)  
Antiguo 02/03/2010, 09:28
Avatar de RusO91  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 91
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Manera mas optima de buscar el minimo!

Sea M = 2, 5, 10, 3, 1, 91 una matriz de una dimensión de longitud 6.
Entonces ponemos en la variable minimo el valor de M[1], es decir minimo = 2.

Ahora empezamos con el FOR, dentro del FOR la variable I toma valores desde 2 a 6 (porque 6 es la longitud de la matriz).
entonces el IF va a comparar M[2] con minimo, si M[2] < minimo, entonces minimo = M[2].

en la segunda pasada del for va a comparar M[3] con minimo, si M[3] < minimo, entonces minimo = M[3].

continua este proceso hasta M[6]. Quedando en la variable minimo el valor 1, correspondiente a M[5].

hacé la prueba "a mano" y fijate que dá eso.

cualquier cosa preguntá, salu2!
  #5 (permalink)  
Antiguo 02/03/2010, 09:42
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 13 años, 3 meses
Puntos: 11
Respuesta: Manera mas optima de buscar el minimo!

no te serviria el método de la burbuja a la larga? porque lo que propones es correcto, pero imaginate la cantidad de if's que tendrias que tener para unos 100 elementos, no es optimo

saludos
  #6 (permalink)  
Antiguo 02/03/2010, 09:49
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 20 años, 3 meses
Puntos: 772
Hola miquel-88

Muevo tu tema al foro de Programación General desde Web general.

Saludos,
  #7 (permalink)  
Antiguo 02/03/2010, 10:29
Avatar de RusO91  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 91
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Manera mas optima de buscar el minimo!

Cita:
Iniciado por eulerss Ver Mensaje
no te serviria el método de la burbuja a la larga? porque lo que propones es correcto, pero imaginate la cantidad de if's que tendrias que tener para unos 100 elementos, no es optimo

saludos
El método de la burbuja sirve para ordenar un arreglo, acá lo único que quiere es buscar el mínimo.
  #8 (permalink)  
Antiguo 02/03/2010, 17:59
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Respuesta: Manera mas optima de buscar el minimo!

Bueno, entiendo tu metodo pero me tocaria declarar una matriz y asignarle los valores, cosa que no me convence.

Utilizare algo asi:

si1 (a<=b)
{
si2(a<=c)
{
minimo=a
salto a continuacion
}
}
si3(b<=c)
{
minimo = b
salta continuacion
}

minimo = c

continuacion:
...

Ya que ahora tengo que traducirlo a lenguaje máquina puedo utilizar las etiquetas de salto que he utilizado.
Es mas optimo que mi primera proposicion ya que la traduccion de esos if utilizado una puerta and en l. maquina representarian 6 if's.

No pense este codigo asta ponerme a contestar la respuesta, hablo dos veces antes de pensar ^^.

Saludos y gracias a todos.
  #9 (permalink)  
Antiguo 03/03/2010, 07:25
Avatar de RusO91  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 91
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Manera mas optima de buscar el minimo!

la matriz la podés llenar haciendo un FOR
  #10 (permalink)  
Antiguo 03/03/2010, 18:16
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Respuesta: Manera mas optima de buscar el minimo!

Cita:
Iniciado por RusO91 Ver Mensaje
la matriz la podés llenar haciendo un FOR
lo se, y por eso mismo es.

En lenguaje asemblador es mas pesado hacer eso que los 3 if's.

Saludos
  #11 (permalink)  
Antiguo 06/03/2010, 19:00
 
Fecha de Ingreso: septiembre-2007
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 14 años, 8 meses
Puntos: 12
Respuesta: Manera mas optima de buscar el minimo!

Sin duda que esto seria lo mas rapido:

minimo = a;
if (b <= minimo) minimo = b;
if (c <= minimo) minimo = c;

El bucle solo es mejor cuando hay que comparar muchos valores, porque es predecible para el procesador y ademas es muy facil hacerlo multi-hilo.

Etiquetas: mas
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 02:26.