Autor
|
Tema: Algoritmo, WTF! (Leído 4,373 veces)
|
Shell Root
|
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,... PROCEDIMIENTO insertar_ordenado( TV, A, VALIN ) l = 1 MIENTRAS ( l <= TV ) && ( VALIN > A[l] ) l = l + 1 FIN MIENTRAS TV = TV + 1 PARA K = TV; l + 1; -1 HACER A[k] = A[k-1] FIN PARA A[l] = VALIN FIN
|
|
« Última modificación: 24 Mayo 2011, 17:08 pm por Shell Root »
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
pucheto
Desconectado
Mensajes: 215
|
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.
|
|
|
En línea
|
|
|
|
Shell Root
|
Tienes razón XD
Pero, a ver... Hago hasta donde terminar el primer MIENTRAS, incremento la variable TV y ya me pierdo...
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
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
|
|
|
En línea
|
|
|
|
Shell Root
|
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?
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Si es el ultimo, tecnicamente L deberia ser mayor a TV y ni entraria al bucle, simplemente lo agregaria
|
|
|
En línea
|
|
|
|
Shell Root
|
Pero a ver, supongamos que tenemos este vector 1,3,5,8,11
Ahora antes del primer ciclo, las variables quedan así, l TV VALIN 1 5 12
Cuando se entra en el ciclo, finalmente quedan así, l TV VALIN 1 5 12 2 3 4 5 6
Hasta aquí, vamos bien, ahora incrementó la variable TV en 1, TV = 6
Aquí es donde me pierdo, entra el ciclo con las siguientes valores, PARA K = TV; l + 1; -1 HACER PARA 6; 7; -1 HACER
Se supone que debe de ingresar al vector, y decrementar 7 a 6, aquí es donde pararía?
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
dakomt
Desconectado
Mensajes: 76
Viking Metal
|
Aquí es donde me pierdo, entra el ciclo con las siguientes valores, PARA K = TV; l + 1; -1 HACER 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.
|
|
« Última modificación: 27 Mayo 2011, 01:20 am por dakomt »
|
En línea
|
|
|
|
|
|