Re: How to find the index of a maximal element in a list?
- To: mathgroup at smc.vnet.net
- Subject: [mg72947] Re: [mg72911] How to find the index of a maximal element in a list?
- From: János <janos.lobb at yale.edu>
- Date: Fri, 26 Jan 2007 06:34:29 -0500 (EST)
- References: <200701251119.GAA19752@smc.vnet.net>
On Jan 25, 2007, at 6:19 AM, Valter Sorana wrote: > I may have a mental block, but I cannot find anything better than > > Position[listName,Max[listName]] > > that traverses the list twice - once to find the maximum and once > to find where it is. > > Isn't there a way to get both the index and the max value in one go? > > (of course one could write a loop that does this, but I want to > avoid loops) > > Thanks, > > Valter. Well, my newbie instinct says that Ordering[listName,-1] might be your best bet. In[1]:= lst = Table[Random[Integer, {1, 10^7}], {i, 1, 10^6}]; In[2]:= Timing[Position[lst, Max[lst]]] Out[2]= {0.4704309999999996*Second, {{653015}}} In[3]:= Timing[Last[Last[First[ Last[Reap[a = -1; i = 1; Scan[(If[#1 >= a, a = #1; Sow[{a, i}], Null]; i++; ) & , lst]; ]]]]]] Out[3]= {8.194379000000001*Second, 653015} In[4]:= Timing[Ordering[lst, -1]] Out[4]= {0.02305199999999985*Second, {653015}} János ---------------------------------------------- Trying to argue with a politician is like lifting up the head of a corpse. (S. Lem: His Master Voice)
- References:
- How to find the index of a maximal element in a list?
- From: Valter Sorana <vsorana@yahoo.com>
- How to find the index of a maximal element in a list?