Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Shell Root en 24 Mayo 2011, 16:15 pm



Título: Algoritmo, WTF!
Publicado por: Shell Root en 24 Mayo 2011, 16:15 pm
En clase de programación, nos explicaron algunos métodos para ordenar elementos y uno de estos fue el siguiente: -No lo terminamos porque no sabíamos como realmente era-

Suponiendo que tengo el siguiente vector: 1,3,5,10,20 y quiero ingresar el número 22.
Además de que las variables:
  TV = TotalValores, que en este casi son 5.
  A = vector
  VALIN = Valor a ingresar
No logro entender como hacerlo,...

Código
  1. PROCEDIMIENTO insertar_ordenado( TV, A, VALIN )
  2.  l = 1
  3.  MIENTRAS ( l <= TV ) && ( VALIN > A[l] )
  4.    l = l + 1
  5.  FIN MIENTRAS
  6.  
  7.  TV = TV + 1
  8.  
  9.  PARA K = TV; l + 1; -1 HACER
  10.    A[k] = A[k-1]
  11.  FIN PARA
  12.  
  13.  A[l] = VALIN
  14.  
  15. FIN


Título: Re: Algoritmo de ordenamiento, WTF!
Publicado por: pucheto en 24 Mayo 2011, 16:27 pm
No es un algoritmo de ordenamiento...
Es un algoritmo para insertar ordenado en un vector.

*Busca la posicion donde va a meter a 'VALIN' (justo detras del primer elemento mayor q VALIN, los anteriores son menores q VALIN).
*Agranda el vector en 1.
*Corre todos los elementos mayores que VALIN 1 posicion hacia adelante.
*Inserta VALIN en la posicion que le corresponde.


Título: Algoritmo, WTF!
Publicado por: Shell Root en 24 Mayo 2011, 17:07 pm
Tienes razón XD

Pero, a ver... Hago hasta donde terminar el primer MIENTRAS, incremento la variable TV y ya me pierdo...


Título: Re: Algoritmo, WTF!
Publicado por: raul338 en 24 Mayo 2011, 20:29 pm
busca sobre insertion sort. Lo que hace es a una matriz ordenada, buscar su lugar, hacerle un "espacio" moviendo todos los elementos restantes....
Y poniendo el elem en su lugar


Título: Re: Algoritmo, WTF!
Publicado por: Shell Root en 24 Mayo 2011, 23:59 pm
Sí eso lo sé, tampoco soy tan principiante.
Pero mi duda es, si el elemento que ingreso DEBE ser el último, porque mueve los otros elementos?


Título: Re: Algoritmo, WTF!
Publicado por: raul338 en 25 Mayo 2011, 00:22 am
Si es el ultimo, tecnicamente L deberia ser mayor a TV y ni entraria al bucle, simplemente lo agregaria :)


Título: Re: Algoritmo, WTF!
Publicado por: Shell Root en 25 Mayo 2011, 05:38 am
Pero a ver, supongamos que tenemos este vector
Código
  1. 1,3,5,8,11

Ahora antes del primer ciclo, las variables quedan así,
Código
  1. l TV VALIN
  2. 1 5 12

Cuando se entra en el ciclo, finalmente quedan así,
Código
  1. l TV VALIN
  2. 1 5 12
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6

Hasta aquí, vamos bien, ahora incrementó la variable TV en 1,
Código
  1. TV = 6

Aquí es donde me pierdo, entra el ciclo con las siguientes valores,
Código
  1. PARA K = TV; l + 1; -1 HACER
  2. PARA 6; 7; -1 HACER

Se supone que debe de ingresar al vector, y decrementar 7 a 6, aquí es donde pararía?


Título: Re: Algoritmo, WTF!
Publicado por: dakomt en 27 Mayo 2011, 01:17 am


Aquí es donde me pierdo, entra el ciclo con las siguientes valores,
Código
  1. PARA K = TV; l + 1; -1 HACER
  2. PARA 6; 7; -1 HACER

Se supone que debe de ingresar al vector, y decrementar 7 a 6, aquí es donde pararía?

No exactamente. en ese bucle l+1 es una constante, no se decrementará nunca. El valor que se va decrementando es K. Es decir Ahora K vale 6... lo vamos decrementando hasta que  K = l +1, es decir, mientras K >= l +1.

Pero como K < l +1 la condición no se cumple y ese bucle no llega a ejecutar ninguna iteración.