sorting Module

This module provides various routines for sorting arrays This isn't something we commonly do but these routines are useful in a few places.

As with most algorithms different options can be made depending on if we want to optimise memory usage, speed etc.


Contents


Interfaces

public interface quicksort

  • private pure subroutine i_quicksort(arr_len, key)

    Sort an integer array based on integer KEY

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    integer, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

  • private pure subroutine i_1_quicksort(arr_len, key, arr1)

    Sort an integer array based on integer KEY

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    integer, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr1

    Arrays to be sorted

  • private pure subroutine i_2_quicksort(arr_len, key, arr1, arr2)

    Sort two integer arrays based on integer KEY

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    integer, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr1

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr2

    Arrays to be sorted

  • private pure subroutine i_3_quicksort(arr_len, key, arr1, arr2, arr3)

    Sort three integer arrays based on integer KEY

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    integer, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr1

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr2

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr3

    Arrays to be sorted

  • private pure subroutine r_quicksort(arr_len, key)

    Sort a real array key

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    real, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

  • private pure subroutine r_1_quicksort(arr_len, key, arr1)

    Sort real arrays key and arr1 based on key

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    real, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

    real, intent(inout), dimension(1:arr_len) :: arr1

    Arrays to be sorted

public interface insertsort

  • private pure subroutine i_insertsort(arr_len, key)

    Sorts integer array key using insertion sort based on order of key.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    integer, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

  • private pure subroutine i_1_insertsort(arr_len, key, arr1)

    Sorts integer arrays key and arr1 using insertion sort based on order of key.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    integer, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr1

    Arrays to be sorted

  • private pure subroutine i_2_insertsort(arr_len, key, arr1, arr2)

    Sorts integer arrays key, arr1 and arr2 using insertion sort based on order of key.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    integer, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr1

    Arrays to be sorted

    integer, intent(inout), dimension(1:arr_len) :: arr2

    Arrays to be sorted

  • private pure subroutine i_3_insertsort(arr_len, key, arr1, arr2, arr3)

    Sorts integer arrays key, arr1, arr2 and arr3 using insertion sort based on order of key.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len
    integer, intent(inout), dimension(1:arr_len) :: key
    integer, intent(inout), dimension(1:arr_len) :: arr1
    integer, intent(inout), dimension(1:arr_len) :: arr2
    integer, intent(inout), dimension(1:arr_len) :: arr3
  • private pure subroutine r_insertsort(arr_len, key)

    Sorts real array key using insertion sort based on the order of key.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    real, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

  • private pure subroutine r_1_insertsort(arr_len, key, arr1)

    Sorts real arrays key and arr1 using insertion sort based on order of key.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: arr_len

    Size of arrays

    real, intent(inout), dimension(1:arr_len) :: key

    Arrays to be sorted

    real, intent(inout), dimension(1:arr_len) :: arr1

    Arrays to be sorted

private interface swap_elem

  • private pure subroutine i_swap_elem(arr, ind1, ind2)

    Swaps element at ind1 in arr with element at ind2.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout), dimension(:) :: arr
    integer, intent(in) :: ind1
    integer, intent(in) :: ind2
  • private pure subroutine r_swap_elem(arr, ind1, ind2)

    Swaps element at ind1 in arr with element at ind2.

    Arguments

    Type IntentOptional Attributes Name
    real, intent(inout), dimension(:) :: arr
    integer, intent(in) :: ind1
    integer, intent(in) :: ind2

Subroutines

private pure subroutine i_quicksort(arr_len, key)

Sort an integer array based on integer KEY

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

integer, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

private pure subroutine i_1_quicksort(arr_len, key, arr1)

Sort an integer array based on integer KEY

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

integer, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr1

Arrays to be sorted

private pure subroutine i_2_quicksort(arr_len, key, arr1, arr2)

Sort two integer arrays based on integer KEY

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

integer, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr1

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr2

Arrays to be sorted

private pure subroutine i_3_quicksort(arr_len, key, arr1, arr2, arr3)

Sort three integer arrays based on integer KEY

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

integer, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr1

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr2

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr3

Arrays to be sorted

private pure subroutine r_quicksort(arr_len, key)

Sort a real array key

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

real, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

private pure subroutine r_1_quicksort(arr_len, key, arr1)

Sort real arrays key and arr1 based on key

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

real, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

real, intent(inout), dimension(1:arr_len) :: arr1

Arrays to be sorted

private pure subroutine i_insertsort(arr_len, key)

Sorts integer array key using insertion sort based on order of key.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

integer, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

private pure subroutine i_1_insertsort(arr_len, key, arr1)

Sorts integer arrays key and arr1 using insertion sort based on order of key.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

integer, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr1

Arrays to be sorted

private pure subroutine i_2_insertsort(arr_len, key, arr1, arr2)

Sorts integer arrays key, arr1 and arr2 using insertion sort based on order of key.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

integer, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr1

Arrays to be sorted

integer, intent(inout), dimension(1:arr_len) :: arr2

Arrays to be sorted

private pure subroutine i_3_insertsort(arr_len, key, arr1, arr2, arr3)

Sorts integer arrays key, arr1, arr2 and arr3 using insertion sort based on order of key.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len
integer, intent(inout), dimension(1:arr_len) :: key
integer, intent(inout), dimension(1:arr_len) :: arr1
integer, intent(inout), dimension(1:arr_len) :: arr2
integer, intent(inout), dimension(1:arr_len) :: arr3

private pure subroutine r_insertsort(arr_len, key)

Sorts real array key using insertion sort based on the order of key.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

real, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

private pure subroutine r_1_insertsort(arr_len, key, arr1)

Sorts real arrays key and arr1 using insertion sort based on order of key.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: arr_len

Size of arrays

real, intent(inout), dimension(1:arr_len) :: key

Arrays to be sorted

real, intent(inout), dimension(1:arr_len) :: arr1

Arrays to be sorted

private pure subroutine i_swap_elem(arr, ind1, ind2)

Swaps element at ind1 in arr with element at ind2.

Arguments

Type IntentOptional Attributes Name
integer, intent(inout), dimension(:) :: arr
integer, intent(in) :: ind1
integer, intent(in) :: ind2

private pure subroutine r_swap_elem(arr, ind1, ind2)

Swaps element at ind1 in arr with element at ind2.

Arguments

Type IntentOptional Attributes Name
real, intent(inout), dimension(:) :: arr
integer, intent(in) :: ind1
integer, intent(in) :: ind2