# Index of max and min value in an array

How can I find the index of the maximum element in an array without looping?

For example, if I have:

```a = [1 2 999 3];
```

I want to define a function indexMax so that indexMax(a) would return 3.

Likewise for defining indexMin.

As pointed by Evgeni max and min can return the argmax and argmin as second arguments. It is worth while noting that you can use these functions along specific dimensions:

``` A = rand(4); % 4x4 matrix
[ row_max row_argmax ] = max( A, [], 2 ); % max for each row - 2nd dimension
[ col_min col_argmin ] = min( A, [], 1 ); % min for each column - 1st dimension
```

Note the empty [] second argument - it is crucial max( A, [], 2 ) is not at all equivalent to max( A, 2 ) (I'll leave it to you as a small exercise to see what max( A, 2 ) does).

The argmax/argmin returned from these "along dimension" calls are row/col indices.

The built-in max function has this functionality when two output arguments are specified:

```a = [1 2 999 3];
[the_max, index_of_max] = max(a)

the_max =

999

index_of_max =

3
```

Likewise for min.

Just as an alternative solution, you might try this:

```a = rand(1,1000);
min_idx = find(a == min(a));
```

Obviously, the same procedure is applicable in the case of max.

I hope this helps.