# Finding the position in a list where the maximum or minimum value occurs [duplicate]

We can use Max[exampleList] or Min[exampleList] to find the maxima and minima of exampleList, however, is there a similar standalone function that returns something like {position in array, maximum value in the array} or {position in array, minimum value in the array}, i.e. both the position and value of the maximum or minimum element in exampleList? It seems awkward to have to write Position[exampleList,Max[exampleList]] or Position[exampleList,Min[exampleList]]?

Position[list,_?(#==Max[list]&)]


Position[list,Max[list]]


will do the trick, obviously change Max to Min for minimum...

Ordering[list,1]
Ordering[list,-1]


Will give positions of minimum and maximum, respectively.

Computation times

order[n_] := Block[{},
list = RandomReal[1, n];
t1 = (Position[list, Min@list]; // RepeatedTiming // First);
t2 = (Ordering[list, 1]; // RepeatedTiming // First);
{{n, t1}, {n, t2}}]
tab = ParallelTable[order[Floor[1.1^n]], {n, 1, 100, 1}];
ListLogLogPlot[{tab[[All, 1]], tab[[All, 2]]}] Ordering is much faster.

• Why can't we just write Position[exampleList,Max[exampleList]]? Sorry, I wrote that just as you were posting this answer. – Geof Apr 9 '14 at 8:56
• @Geof: Well, for one thing, that's incomplete. The first argument to Position is the target list, and Max does not return a list... – ciao Apr 9 '14 at 8:57
• OK, I like the use of Ordering here, that's what I was after! – Geof Apr 9 '14 at 8:58
• Sorry, that was a typo, I fixed the comment. I meant, why can't "(#==Max[list]&)" just be "Max[exampleList]"? – Geof Apr 9 '14 at 8:58
• @geof: you can, I'm just in the habit of having complex functions there... – ciao Apr 9 '14 at 8:59