# selectperm!

selectperm!(ix, v, k, [alg=

Like `selectperm`

, but accepts a preallocated index vector `ix`

. If `initialized`

is `false`

(the default), ix is initialized to contain the values `1:length(ix)`

.

## Examples

The `selectperm!`

function in Julia is used to generate a permutation of a given collection based on specific criteria. It is similar to the `selectperm`

function, but instead of returning a new permutation, it modifies the preallocated index vector `ix`

in place.

```
julia> v = [10, 5, 20, 15, 30];
julia> ix = collect(1:length(v));
julia> selectperm!(ix, v, 3)
5-element Array{Int64,1}:
2
1
4
3
5
```

In this example, the `selectperm!`

function generates a permutation of the index vector `ix`

based on the values in `v`

such that the resulting permutation represents the indices of the top 3 elements in descending order. The resulting modified `ix`

vector is `[2, 1, 4, 3, 5]`

.

The optional parameters that can be passed to `selectperm!`

are:

`alg`

: Specifies the algorithm to use for the permutation. Default is`<algorithm>`

.`by`

: Optional transformation function to apply to the elements of the collection before comparing them.`lt`

: Optional comparison function to use for sorting the elements.`rev`

: Specifies whether the permutation should be in reverse order. Default is`false`

.`initialized`

: Specifies whether the index vector`ix`

is preinitialized. Default is`false`

.

Example with optional parameters:

```
julia> v = [7, 2, 5, 9, 3];
julia> ix = collect(1:length(v));
julia> selectperm!(ix, v, 2, by = x -> x^2, rev = true)
5-element Array{Int64,1}:
4
3
1
5
2
```

In this example, the `selectperm!`

function generates a permutation of the index vector `ix`

based on the squared values of `v`

in descending order. The resulting modified `ix`

vector is `[4, 3, 1, 5, 2]`

.

## See Also

complement, complement!, intersect, intersect!, issubset, selectperm, selectperm!, Set, setdiff, setdiff!, symdiff, union, union!,## User Contributed Notes

### Add a Note

The format of note supported is markdown, use triple backtick to start and end a code block.