Re: Greatest element in list
- To: mathgroup at smc.vnet.net
- Subject: [mg30491] Re: Greatest element in list
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Fri, 24 Aug 2001 04:05:51 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <9m27in$gqd$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
without your data I can't reproduce the problem.
But
MaxPosition = Compile[{{lst, _Real, 1}}, Module[{max = First[lst], pos =
1, i = 2},
Scan[
If[# > max, max = #; pos = i++, i++] & ,
Rest[lst]
];
pos
]
]
is atleast faster than Position[#, Max[#]] &[lst]
In[]:=lst = Table[Random[], {1000000}];
In[]:=Timing[Position[#, Max[#]] &[lst]]
Out[]={6.85 Second, {{602020}}}
In[]:=Timing[MaxPosition[lst]]
Out[]={4.42 Second, 602020}
Because it scans the list only once.
Regards
Jens
Oliver Friedrich wrote:
>
> Hi,
>
> what's the best way to get the position of the greatest number in list of
> reals? I've tried
>
> Position[#,Max[#]]&list
>
> but surprisingly, it doesn't work all the time, sometimes it returns an
> empty list. How is that, because a theorem says that a non empty set of real
> numbers must have at least one biggest element. So Max[#] can't be empty.
>
> Any solutions ?
>
> Oliver Friedrich