program demo_psort ! partially sort an array use M_orderpack, only : psort implicit none character(len=*),parameter :: g='(*(g0,1x))' integer :: nord int: block integer,allocatable :: ia(:) ia=[10,5,7,1,4,5,6,8,9,10,1] nord=5 write(*,g)'Original.................:',ia call psort(ia,nord) write(*,g)'Number of indices to sort:',nord write(*,g)nord,'Lowest values..........:',ia(:nord) write(*,g)'Entire array.............:',ia write(*,g) endblock int char: block character(len=:),allocatable :: ca(:) integer :: i ca=[character(len=20) :: 'fan','a','car','be','egg','dam','gas'] nord=3 write(*,g)'Original.................:',(trim(ca(i)),i=1,size(ca)) call psort(ca,nord) write(*,g)'Number of indices to sort:',nord write(*,g)nord,'Lowest values..........:',(trim(ca(i)),i=1,nord) write(*,g)'Entire array.............:',(trim(ca(i)),i=1,size(ca)) write(*,g) endblock char end program demo_psort