Hola amigos taringeros este es mi décimo post, así es que decidí hacerlo de programación en Fortran, el siguiente código lo que hace es generar una lista de 10 números ingresados por el usuario para que de esta forma por medio de los métodos de burbuja, selección e inserción en Fortran los pueda ordenar, imprimiendo los 5 primeros números ingresados por el usuario y los 5 últimos números ya ordenados por el método deseado.

cMétodo de Burbuja
subroutine burbuja(v,n)
integer v(n)
do i=1,n-1 ! Genera todas las combinaciones de
do j=i+1,n ! n elementos tomados de 2 en 2
if (v(i).GT.v(j)) then ! Si el de la izquierda es mayor,
m=v(i)
v(i)=v(j)
v(j)=m ! los intercambia
end if
end do
end do
end
cMétodo de Selección
subroutine seleccion(v,n)
integer v(n)
do i=1,n-1 ! Posicion en la lista
min=i ! Minimo en la posicion ‘min’
do j=i+1,n ! Busca el minimo situado a la derecha de i
if (v(min).GT.v(j)) then
min=j
end if
end do
m=v(i)
v(i)=v(min)
v(min)=m ! Intercambia valores
end do
end
cMétodo de Inserción
subroutine insercion(v,n)
integer v(n)
do i=2,n ! Elemento que se quiere insertar adecuadamente
m=v(i) ! Lo recuerda
j=i-1
do while (v(j).GT.m .and. j.GT.0)
v(j+1)=v(j) ! Efectua los desplazamientos
j=j-1
if (j.EQ.0) then
endif
end do
v(j+1)=m ! y lo pone
end do
end
cPrograma
program Ordenamiento
real x
integer a(10)
write(*,*) "+++++++++++++++++++++++++++++++++++++"
write(*,*) "Seleccione una de las siguientes opciones:"
write(*,*) "1. Ordenamiento de Burbujan",
+ " 2. Ordenamiento de Selección",
+ "3. Ordenamiento por Inserción"
write(*,*) "+++++++++++++++++++++++++++++++++++++"
read(*,*)x
if (x.EQ.1) then
write(*,*) "....................................."
write(*,*) "1. Ordenamiento de Burbuja"
write(*,*) "....................................."
write(*,*) "Ingrese los 10 números a ordenar:"
do k=1,10
read(*,*) a(k)
end do
write(*,*) "Los primeros 5 números ingresados son:"
write(*,*)(a(o),'n',o=1,5)
call burbuja(a,k)
write(*,*) "Los últimos 5 números ya ordenados son:"
write(*,*)(a(k),'n',k=6,10)
elseif (x.EQ.2) then
write(*,*) "....................................."
write(*,*) "2. Ordenamiento de Selección"
write(*,*) "....................................."
write(*,*) "Ingrese los 10 números a ordenar:"
do k=1,10
read(*,*) a(k)
end do
write(*,*) "Los primeros 5 números ingresados son:"
write(*,*)(a(p),'n',p=1,5)
call seleccion(a,k)
write(*,*) "Los últimos 5 números ya ordenados son:"
write(*,*)(a(k),'n',k=6,10)
elseif (x.EQ.3) then
write(*,*) "....................................."
write(*,*) "3. Ordenamiento de Inserción"
write(*,*) "....................................."
write(*,*) "Ingrese los 10 números a ordenar:"
do k=1,10
read(*,*) a(k)
end do
write(*,*) "Los primeros 5 números ingresados son:"
write(*,*)(a(q),'n',q=1,5)
call insercion(a,k)
write(*,*) "Los últimos 5 números ya ordenados son:"
write(*,*)(a(k),'n',k=6,10)
endif
stop
end
Gracias y Saludos!!!!!!

