Returns the minimum element in the sequence, using the given predicate as the comparison between elements.

SDKs

- macOS 10.14+
- Xcode 10.0+

Framework

- Create ML

## Declaration

## Parameters

`areInIncreasingOrder`

A predicate that returns

`true`

if its first argument should be ordered before its second argument; otherwise,`false`

.

## Return Value

The sequence’s minimum element, according to `are`

. If the sequence has no elements, returns `nil`

.

## Discussion

The predicate must be a *strict weak ordering* over the elements. That is, for any elements `a`

, `b`

, and `c`

, the following conditions must hold:

`are`

is alwaysIn Increasing Order(a, a) `false`

. (Irreflexivity)If

`are`

andIn Increasing Order(a, b) `are`

are bothIn Increasing Order(b, c) `true`

, then`are`

is alsoIn Increasing Order(a, c) `true`

. (Transitive comparability)Two elements are

*incomparable*if neither is ordered before the other according to the predicate. If`a`

and`b`

are incomparable, and`b`

and`c`

are incomparable, then`a`

and`c`

are also incomparable. (Transitive incomparability)

This example shows how to use the `min(by:)`

method on a dictionary to find the key-value pair with the lowest value.

Complexity: O(*n*), where *n* is the length of the sequence.