[Mono-list] Minimum element of a list

David Henderson dnadavewa at yahoo.com
Fri Jan 7 17:50:56 EST 2011

Thanks, Jon and Matt!  I'll give those examples a try.

For reference, the C++ code I sent was a from memory excerpt of some code I 
wrote years ago to monotonically smooth a p-value distribution.  So, the vector 
is first sorted with ascending raw p-values and then a multiple hypothesis 
correction is computed which leaves the p-values not monotonically ascending.  
So, you then go back through the vector and make sure that the p-values only get 
bigger.  Hence, the minimum from where you are to the end as you move along what 
used to be an ordering of smallest to largest.

Dave H

----- Original Message ----
From: Jonathan Pryor <jonpryor at vt.edu>
To: David Henderson <dnadavewa at yahoo.com>
Cc: mono-list at lists.ximian.com
Sent: Fri, January 7, 2011 2:01:08 PM
Subject: Re: [Mono-list] Minimum element of a list

On Jan 7, 2011, at 4:40 PM, David Henderson wrote:
> I have a list and I would like to find the minimum element in the array from 
> current iterator in a foreach loop to the end, not the minimum element 

This isn't strictly possible, as there's no way of knowing the index of the 
current iterator element.  You could use List<T>.IndexOf() to find it, but this 
would return the first matching element, which doesn't help if there are 
multiple matching elements.

Consequently, I would suggest using a normal `for` loop instead of a `foreach` 
loop, at which point you will have access to the index, allowing use of 
Enumerable.Skip() and Enumerable.Min() extension methods:

    List<double> d = ...;
    for (int i = 0; i < d.Count; ++i) {
        double min_e = d.Skip (i).Min ();

If you absolutely know you won't have duplicates, you could use a `foreach` loop 
and use List<T>.IndexOf(), but the performance of that would not be great...

- Jon


More information about the Mono-list mailing list