| Home | Libraries | People | FAQ | More

##### sort

###### Prototype

    template<class RandomAccessRange>
    RandomAccessRange& sort(RandomAccessRange& rng);

    template<class RandomAccessRange>
    const RandomAccessRange& sort(const RandomAccessRange& rng);

    template<class RandomAccessRange, class BinaryPredicate>
    RandomAccessRange& sort(RandomAccessRange& rng, BinaryPredicate pred);

    template<class RandomAccessRange, class BinaryPredicate>
    const RandomAccessRange& sort(const RandomAccessRange& rng, BinaryPredicate pred);

###### Description

`sort` sorts the elements in `rng` into ascending order. `sort` is not guaranteed to be stable. Returns the sorted range.

For versions of the `sort` function without a predicate, ascending order is defined by `operator<()` such that for all adjacent elements `[x,y]`, `y < x == false`.

For versions of the `sort` function with a predicate, ascending order is defined by `pred` such that for all adjacent elements `[x,y]`, `pred(y, x) == false`.

###### Definition

Defined in the header file `boost/range/algorithm/sort.hpp`

###### Requirements

For versions of sort without a predicate:

- `RandomAccessRange` is a model of the Random Access Range Concept.
- `RandomAccessRange` is mutable.
- `RandomAccessRange`'s value type is a model of the `LessThanComparableConcept`.
- The ordering relation on `RandomAccessRange`'s value type is a strict weak ordering, as defined in the `LessThanComparableConcept` requirements.

For versions of sort with a predicate

- `RandomAccessRange` is a model of the Random Access Range Concept.
- `RandomAccessRange` is mutable.
- `BinaryPredicate` is a model of the `StrictWeakOrderingConcept`.
- `RandomAccessRange`'s value type is convertible to both of `BinaryPredicate`'s argument types.

###### Complexity

`O(N log(N))` comparisons (both average and worst-case), where `N` is `distance(rng)`.