alexclipse escribiste:¿Te importaría explicarme para qué son $#_-1? Es que no sé para que se usan '#' y '_' :S
Por ejemplo, en: if ( $_[$j] < $_[$i] ) no me queda claro para qué son las '_'
O aquí: @_[$i, $j] = @_[$j, $i];
La variable que recoge y almacena todos los argumentos que pasamos a una subrutina es la
@_. Como ves, es un
array. Así que para acceder al $i-esimo elemento de ese
array lo escribimos como
$_[$i]. Vamos, como si fuera cualquier otro
array de Perl, pero en este caso solo se llama '_'.
Un caso especial de los
arrays es cuando le ponemos un '#' delante. Por ejemplo:
@x = ('a', 'b', 'e');
print $#x;
En ese caso, estamos sacando el índice del último elemento del
array. En el ejemplo, saldría un 2 en pantalla.
En el algoritmo, estamos usando
$#_ para saber el índice del último elemento de
@_.
En la subrutina trabajamos con
@_, ya que así estamos modificando también los elementos que están en
@a.
Más información en (tu propio ordenador en)
perldoc perldata (
traducido).
alexclipse escribiste:Lo que hace el ordenamiento en burbuja más o menos lo entiendo (creo), sería algo así:
Tengo los números (5,9,23,54,1,76). Pues compara el 5 y el 9. Si 5<9 los deja y si no los cambia. Luego compara 23 y 54, y luego 1 y 76. ¿Cómo continua?
No, no es así. Se compara el 5 con todos los demás. Si en las comparaciones hay algún número menor, se intercambia con él (en este caso, el '1'), y sigue hasta el final. Luego, se coge el segundo elemento de la lista y se compara con todos los demás. Luego el tercero, y así, hasta el penúltimo, que solo tiene que compararse con el último.
alexclipse escribiste:Muchísimas gracias por todo lo que me estás ayudando, siento ser pesado pero es que me cuesta bastante esto del Perl.
Para aprender Perl, es una buena base haber aprendido otro lenguaje, como el C o el awk.
Empezar desde cero.