char_sort Module Subroutine

private pure module subroutine char_sort(array, reverse)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(inout) :: array(0:)
logical, intent(in), optional :: reverse

Calls

proc~~char_sort~~CallsGraph proc~char_sort char_sort interface~pic_optional pic_optional proc~char_sort->interface~pic_optional proc~char_decrease_sort char_decrease_sort proc~char_sort->proc~char_decrease_sort proc~char_increase_sort char_increase_sort proc~char_sort->proc~char_increase_sort proc~optional_char optional_char interface~pic_optional->proc~optional_char proc~optional_dp optional_dp interface~pic_optional->proc~optional_dp proc~optional_int32 optional_int32 interface~pic_optional->proc~optional_int32 proc~optional_int64 optional_int64 interface~pic_optional->proc~optional_int64 proc~optional_logical optional_logical interface~pic_optional->proc~optional_logical proc~optional_sp optional_sp interface~pic_optional->proc~optional_sp none~introsort~10 introsort proc~char_decrease_sort->none~introsort~10 none~introsort~5 introsort proc~char_increase_sort->none~introsort~5 none~introsort~10->none~introsort~10 none~heap_sort~10 heap_sort none~introsort~10->none~heap_sort~10 none~insertion_sort~20 insertion_sort none~introsort~10->none~insertion_sort~20 none~partition~10 partition none~introsort~10->none~partition~10 none~introsort~5->none~introsort~5 none~heap_sort~5 heap_sort none~introsort~5->none~heap_sort~5 none~insertion_sort~15 insertion_sort none~introsort~5->none~insertion_sort~15 none~partition~5 partition none~introsort~5->none~partition~5 none~max_heapify~10 max_heapify none~heap_sort~10->none~max_heapify~10 none~max_heapify~5 max_heapify none~heap_sort~5->none~max_heapify~5 none~max_heapify~10->none~max_heapify~10 none~max_heapify~5->none~max_heapify~5

Source Code

      pure module subroutine char_sort(array, reverse)
!! `char_sort( array[, reverse] )` sorts the input `ARRAY` of type `character(len=*)`
!! using a hybrid sort based on the `introsort` of David Musser.
!! The algorithm is of order O(N Ln(N)) for all inputs.
!! Because it relies on `quicksort`, the coefficient of the O(N Ln(N))
!! behavior is small for random data compared to other sorting algorithms.
         implicit none
         character(len=*), intent(inout)         :: array(0:)
         logical, intent(in), optional :: reverse
      end subroutine char_sort