demo_sort_special Program

Contents

Source Code


Variables

Type Attributes Name Initial
real(kind=real64) :: dd(isz)
real(kind=real64) :: hi
integer, parameter :: isz = 2000
real(kind=real64) :: low

Source Code

     program demo_sort_special
     ! sort an array using insertion sort
     use,intrinsic :: iso_fortran_env, only : int32, real32, real64
     use M_orderpack, only : sort_special
     implicit none
     ! an insertion sort is very efficient for very small arrays
     ! but generally slower than methods like quick-sort and merge-sort.
     integer,parameter :: isz=2000
     real(kind=real64) :: dd(isz), hi, low
        ! make an array of random values
        call random_seed()
        call random_number(dd)
        dd=dd*1000000.0-500000.0
        low= minval(dd)
        hi = maxval(dd)
        ! sort the data
        call sort_special(dd)
        ! cursory checks
        if(any(dd(1:isz-1) .gt. dd(2:isz)))stop 'ERROR: array not sorted'
        write(*,*)'check min:',dd(1).eq.low
        write(*,*)'check max:',dd(isz).eq.hi
        write(*,*)'PASSED: random array is now sorted'
     end program demo_sort_special