# Tutorial :C# arrays: finding custom minimal element

### Question:

How do I specify a custom code for comparison when finding a minimal element in my Array?

For example, I have two arrays:

``int[] a = new int[] {3, 6, 8};  int[] b = new int[] {9, -2, 5};  ``

I want to figure out, what would be the minimal ratio of the elements with respective indexes (i.e. find minimum of `3/9`, `6/(-2)` and `8/5`) and then return the index. I'm already aware of Array.Min(), but I wonder if it's possible to make any sort of it's customization.

### Solution:1

Perhaps something like this:

``double smallest = double.MaxValue;  int smallestIndex = 0;    for (int i = 0; i < (a.Length > b.Length ? b.Length : a.Length); i++)  {      if ((double)a[i] / b[i] < smallest)      {          smallest = (double)a[i] / b[i];          smallestIndex = i;      }  }  ``

smallestIndex will contain the index of the smallest ratio at the end.

### Solution:2

Using linq to get the minimal value AND the index, you could look at this answer:

How to use LINQ to select object with minimum or maximum property value

Using Jon Skeet extension method, you could then write

``var result = Enumerable.Range(0,a.Length)       .Select(i => new {Value = a[i]/b[i], Index = i})       .MinBy(r => r.Value);  ``

(you'll have to watch out for 0's in b)

### Solution:3

You could use linq to 'zip' the two sequences together, order them by their ratio and select the first index:

``a.Select((item, index) => {new { A = item, B = b[index], Idx = index })      .OrderBy(i => (double)i.A / i.B)      .Select(i => i.Idx)      .First();  ``

### Solution:4

with linq you could do this:

``            int customMin = a.Select((v, i) => new { a = v, b = b[i] })                  .Select(x => x.a / x.b)                  .Min();  ``

the first select merges the two lists into on, the second select calculates your custom mertic, then we call min to get the minimum.

### Solution:5

don't forget about the SortedList Class

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »