Pathologically Eclectic Rubbish Lister PerlMonks

### How can I find the index of the biggest element in an array?

 on Mar 08, 2001 at 08:03 UTC Need Help??
Contributed by Anonymous Monk on Mar 08, 2001 at 08:03 UTC
Q&A  > arrays

 Answer: How can I find the index of the biggest element in an array?contributed by GrandFather Given an array @data containing numeric data: ```my \$idxMax = 0; \$data[\$idxMax] > \$data[\$_] or \$idxMax = \$_ for 1 .. \$#data; [download]``` is not only compact but, somewhat surprisingly perhaps, comparable in speed to caching \$data[\$idxMax] as shown in most of the other variants. A cache variant is worth using if an expensive calculation is required in the comparison or a very large array is being processed. Answer: How can I find the index of the biggest element in an array?contributed by tye ```my \$index = 0; my \$maxval = \$myarray[ \$index ]; for my \$i ( 0 .. \$#myarray ) { \$maxval < \$myarray[\$i] and \$index = \$i if \$maxval < \$myarray[\$i]; } print "The greatest is element number \$index: \$myarray[\$index]\n"; [download]``` Answer: How can I find the index of the biggest element in an array?contributed by satchboost ```my \$index = 0; my \$maxval = \$myarray[ my \$index ]; for ( 0 .. \$#myarray ) { if ( \$maxval < \$myarray[\$_] ) { \$index = \$_; \$maxval = \$myarray[\$_]; } } print "Max is index \$index: \$myarray[\$index]\n"; [download]``` Answer: How can I find the index of the biggest element in an array?contributed by turnstep ```my \$max; my \$index; my \$x = 0; for ( @myarray ) { \$index = \$x and \$max = \$_ if !defined \$max or \$_ > \$max; \$x++; } print "The winner is element number \$index: \$myarray[\$index]\n"; [download]``` Answer: How can I find the index of the biggest element in an array?contributed by reisinge A one-liner where the array elements are the command line arguments: ```\$ perl -E 'say [ sort { \$ARGV[\$b] <=> \$ARGV[\$a] } 0..\$#ARGV ]->[0]' 42 + 1000 999 0 -1 [download]``` Answer: How can I find the index of the biggest element in an array?contributed by DillonYu Use mod:://List::Util's reduce: ```use List::Util qw /reduce/; my @arr= qw/7 6 4 90 5 7/; my \$index = reduce {\$arr[\$a] > \$arr[\$b] ? \$a : \$b} (0 .. \$#arr); print "\$index\n"; [download]``` Answer: How can I find the index of the biggest element in an array?contributed by salva and if what you need are the indexes for the \$n biggest elements: ```use Sort::Key::Top qw(nkeytop rnkeytop); my @data = ( 100, -2, 5, 12, 1, 1, 6786, ...); my @min_ix_n = nkeytop { @data[\$_] } \$n => 0..\$#data; my @max_ix_n = rnkeytop { @data[\$_] } \$n => 0..\$#data; [download]``` Answer: How can I find the index of the biggest element in an array?contributed by jdporter A recursive solution. ```sub _index_of_largest { my \$X = shift; my \$L = shift; my \$x = \$#_; my \$l = pop; defined \$X and \$L > \$l and (\$x,\$l) = (\$X,\$L); @_ or return \$x; unshift @_, \$x, \$l; goto &_index_of_largest } sub index_of_largest { @_ or die; _index_of_largest(undef,undef,@_); } my \$i = index_of_largest( @a ); [download]``` Answer: How can I find the index of the biggest element in an array?contributed by Skeeve ```my \$i = \$#data; my \$max = \$i; \$max = \$data[\$i] > \$data[\$max] ? \$i : \$max while \$i--; print "Max value is \$data[\$max], at index \$max\n" [download]```

• Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
• Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
• Read Where should I post X? if you're not absolutely sure you're posting in the right place.
• Posts may use any of the Perl Monks Approved HTML tags:
a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
• You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
 For: Use: & & < < > > [ [ ] ]
• Link using PerlMonks shortcuts! What shortcuts can I use for linking?

Create A New User
Chatterbox?
 [tye]: I just daemonized and getlogin() still knew who I had been. [tye]: perhaps loginuid ? Not that I concede that something not being in /proc means it is not useful. [Corion]: tye: That's really interesting, but maybe it is because getlogin() returns the name, or the uid, so if that user has been replaced by another user with the same uid in the meantime, that's no problem to the system... [davido]: or on ubuntu /var/run/utmp [Corion]: Otherwise, I would imagine that a user with a process still alive would lock that information in memory. [davido]: so last -f /var/run/utmp on ubuntu provides similar (though more verbose) info [oiskuu]: glibc getlogin just does ttyname() and falls back on getutline(); it's not security related at all. (reminds me of sendmail and remote finger services of the naive early spam era) [Corion]: But yes, "who started this process" is interesting information :) [tye]: no, I really believe that "login user" was added as a fundamental bit of info about each process in order to enhance the usefulness of auditing [Corion]: Ah - if that information is saved in a file, then you could theoretically spam that file and confuse getlogin(). So, don't use it for authentication :)

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (7)
As of 2017-06-23 19:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
How many monitors do you use while coding?

Results (554 votes). Check out past polls.