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]]?


or shorter (per your comment...)


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

Or, as suggested in comments


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]]}]

enter image description here

Ordering is much faster.

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.