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 <[email protected]>
To: David Henderson <[email protected]>
Cc: [email protected]
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 
>the 
>
> current iterator in a foreach loop to the end, not the minimum element 
overall.

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


      
_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to