# C++ Algorithm next_permutation ()

C++ Algorithm next_permutation() function is used to reorder the elements in the range [first, last) into the next lexicographically greater permutation.

A permutation is specified as each of several possible ways in which a set or number of things can be ordered or arranged. It is denoted as N! where N = number of elements in the range.

Elements are compared using operator < for the first version or using the given binary comparison function comp for the second version.

## Parameter

first: A bidirectional iterator pointing to the first element in the range to be permuted.

last: An input iterator pointing the position one past the last in the range to be permuted.

comp: A user-defined binary predicate function that accepts two arguments and returns true if the two arguments are in order, otherwise returns false. It follows the strict weak ordering to order the elements.

## Return value

It returns true if the function could reorder the object as a lexicographically greater permutations.

Else, the function returns false to indicate that the arrangement is not greater than the previous, but the lowest possible (sorted in ascending order).

## Complexity

Complexity is up to linear in half the distance between first and last.

## Data Races

The objects in the range [first, last) are modified.

## Exceptions

This function throws an exception if either element are swapped or an operation on iterator throws an exception.

## Example 1

Let's see the simple example to demonstrate the use of next_permutation():

Output:

```aab
aba
baa
```

## Example 2

Let's see another simple example:

Output:

```The 3! possible permutations with 3 elements:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
After loop: 1 2 3
```

## Example 3

Let's see another simple example:

Output:

```1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
```

## Example 4

Let's see a simple example:

Output:

```231 312 321
```

Next TopicC++ Algorithm

### Feedback   