# ?lasrt2

Sorts numbers in increasing or decreasing order.

## Syntax

call slasrt2(id, n, d, key, info)

call dlasrt2(id, n, d, key, info)

## Description

This routine is modified LAPACK routine ?lasrt, which sorts the numbers in d in increasing order (if `id = 'I'`) or in decreasing order (if `id = 'D'` ). It uses Quick Sort, reverting to Insertion Sort on arrays of size ≤ 20. Dimension of STACK limits n to about 232.

## Input Parameters

id

  CHARACTER*1.

  = 'I': sort d in increasing order;

  = 'D': sort d in decreasing order.

n

  INTEGER. The length of the array d.

d

  REAL for slasrt2

  DOUBLE PRECISION for dlasrt2.

  Array, DIMENSION (n).

  On entry, the array to be sorted.

key

  INTEGER.

  Array, DIMENSION (n).

  On entry, key contains a key to each of the entries in `d()`.

  Typically, `key(i) = i` for all i .

## Output Parameters

D

  On exit, d has been sorted into increasing order

  `(d(1) ≤ ... ≤ d(n) )` or into decreasing order

  `(d(1) ≥ ... ≥ d(n) )`, depending on id.

info

  INTEGER.

  `= 0`: successful exit

  `< 0`: if `info = -i`, the i-th argument had an illegal value.

key

  On exit, key is permuted in exactly the same manner as d() was permuted from input to output. Therefore, if `key(i) = i` for all i upon input, then`d_out(i) = d_in(key(i))`.

Parent topic: Auxiliary Routines