! Insertion sort
SUBROUTINE sortc(array,n)
IMPLICIT NONE
INTEGER,INTENT(IN)::n
CHARACTER(LEN=*),DIMENSION(n),INTENT(INOUT)::array
! local var
INTEGER::i, j, iptr
CHARACTER(LEN=LEN(array))::temp
! sort the array
outer:DO i=1,n-1
iptr=i
inner:DO j=i+1,n
minval:IF(LLT(array(j),array(iptr))) THEN
iptr=j
END IF minval
END DO inner
swap:IF(i/=iptr) THEN
temp=array(i)
array(i)=array(iptr)
array(iptr)=temp
END IF swap
END DO outer
END SUBROUTINE sortc
! Bubble sort
SUBROUTINE sortc2(array,n)
IMPLICIT NONE
INTEGER,INTENT(IN)::n
CHARACTER(LEN=*),DIMENSION(n),INTENT(INOUT)::array
!local var
INTEGER::i,j
CHARACTER(LEN=LEN(array))::temp
outer:DO i=n,2,-1
inner: DO j=1,i-1
swap:IF(array(j)>array(j+1)) THEN
temp=array(j)
array(j)=array(j+1)
array(j+1)=temp
END IF swap
END DO inner
END DO outer
END SUBROUTINE sortc2