`Description`

`Description`

```
```*Partial_sort* rearranges the elements in the range *[first, last) *so that they are partially in ascending order. Specifically, it places the smallest *middle – first* elements, sorted in ascending order, into the range *[first, middle)*. The remaining *last – middle* elements are placed, in an unspecified order, into the range *[middle, last)*. [1] [2]

The two versions of *partial_sort* differ in how they define whether one element is less than another. The first version compares objects using *operator<*, and the second compares objects using a function object *comp*.

The postcondition for the first version of *partial_sort* is as follows. If *i* and *j* are any two valid iterators in the range *[first, middle)* such that *i* precedes *j*, and if *k* is a valid iterator in the range *[middle, last)*, then **j < *i* and **k < *i* will both be *false*. The corresponding postcondition for the second version of *partial_sort* is that *comp(*j, *i)* and *comp(*k, *i)* are both false. Informally, this postcondition means that the first *middle – first* elements are in ascending order and that none of the elements in *[middle, last)* is less than any of the elements in *[first, middle)*.