简体   繁体   中英

Compare each and every items of two arrays C#

I do have two arrays:

int[] oddArr = { 11, 9, ... };

int[] evenArr = {4, 2, 8, ... };

I want to check if every items from oddArr is greater than every items from evenArr then we should do some logic.

Like: if(11 > 4 && 11 > 2 && 11 > 8 && 9 > 4 && 9 > 2 && 9 > 8 && ...)

I tried something like this:

for (int i = 0; i < oddArr.Length; i++)
{
    for (int j = 0; j < evenArr.Length; j++)
    {
        if (oddArr[i] > evenArr[j])
        {

        }
    }
}

I would think about the problem differently - for everything in oddArr to be greater than everything in evenArr , then the minimum of oddArr has to be greater than the maximum of evenArr :

if (oddArr.Min() > evenArr.Max())

(You'll need a using directive for System.Linq to bring in the Min and max extension methods.)

If you don't want to use Linq library then you can do it like

int minOdd = oddArr[0];
for (int i = 1; i < oddArr.Length; i++)
{
    if(minOdd>oddArr[i])
        minOdd = oddArr[i];
}

int maxEven = evenArr[0]
for (int j = 0; j < evenArr.Length; j++)
{
    if (maxEven > evenArr[j])
        maxEven = evenArr[j];
}

if(minOdd>maxEven)
{
//do someting
}

Logically if every element of oddArr is greater than every element of evenArr then minimum number of oddArr would be greater than maximum number of evenArr .

While Jon Skeet's answer is the better solution here you can still compare every item from oddArr to every item from evenArr using LINQ. Here's how:

var result = oddArr.All(oddItem => evenArr.All(evenItem => evenItem < oddItem));

if(result){
    // every item from oddArr > every item from evenArr
    // Do something
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM