El algoritmo mostrado ordena los nmeros enteros almacenados en un vector "A" de "N" elementos. El vector "B" tiene la misma estructura que "A". Por su parte, "v" y "j" son variables enteras.
El nmero que aparece en el comentario a la derecha de las instrucciones indica su tiempo de ejecucin (con alguna simplificacin).
1) Respecto al comportamiento del algoritmo: a) Realiza ordenacin in situ? b) Es natural? c) Es estable? 2) Cul sera el tiempo de ejecucin en funcin de N para cada uno de estos casos? a) Todos los elementos del vector son diferentes y estn ordenados. b) Todos los elementos del vector son diferentes y estn en orden inverso. c) Todos los elementos del vector son iguales. 3) Respecto a la complejidad del algoritmo: a) Cul es su cota superior? b) Cambiara dicha cota si no existiera el ltimo bucle "For"? 4) Modificando slo una lnea de cdigo, se puede cambiar la estabilidad o inestabilidad del algoritmo vista en el apartado 1-c para que se comporte justo al contrario. Cmo? for i in A'range loop --------- 4 B(i) := A(i); --------- 3 j := i; --------- 1 while j > B'first and then B(j-1) >= B(j) loop --------- 5 v := B(j); --------- 2 B(j) := B(j-1); --------- 4 B(j-1) := v; --------- 3 j := j - 1; --------- 2 end loop; end loop; for i in A'range loop --------- 4 A(i) := B(i); --------- 3 end loop;