Как найти максимальное среди чисел в c

Well, you can just call it twice:

int max3 = Math.Max(x, Math.Max(y, z));

If you find yourself doing this a lot, you could always write your own helper method… I would be happy enough seeing this in my code base once, but not regularly.

(Note that this is likely to be more efficient than Andrew’s LINQ-based answer – but obviously the more elements you have the more appealing the LINQ approach is.)

EDIT: A “best of both worlds” approach might be to have a custom set of methods either way:

public static class MoreMath
{
    // This method only exists for consistency, so you can *always* call
    // MoreMath.Max instead of alternating between MoreMath.Max and Math.Max
    // depending on your argument count.
    public static int Max(int x, int y)
    {
        return Math.Max(x, y);
    }

    public static int Max(int x, int y, int z)
    {
        // Or inline it as x < y ? (y < z ? z : y) : (x < z ? z : x);
        // Time it before micro-optimizing though!
        return Math.Max(x, Math.Max(y, z));
    }

    public static int Max(int w, int x, int y, int z)
    {
        return Math.Max(w, Math.Max(x, Math.Max(y, z)));
    }

    public static int Max(params int[] values)
    {
        return Enumerable.Max(values);
    }
}

That way you can write MoreMath.Max(1, 2, 3) or MoreMath.Max(1, 2, 3, 4) without the overhead of array creation, but still write MoreMath.Max(1, 2, 3, 4, 5, 6) for nice readable and consistent code when you don’t mind the overhead.

I personally find that more readable than the explicit array creation of the LINQ approach.

using System;

class GFG {

static void Main()

{

    byte b1 = 10, b2 = 15;

    decimal d1 = 1000M, d2 = 1568M;

    double db1 = 15.896745, db2 = 8.62644598;

    short sh1 = -96, sh2 = 24;

    int i1 = 26745236, i2 = 36725413;

    long l1 = -2534234234234, l2 = -745837587527423;

    sbyte sb1 = 52, sb2 = 120;

    float f1 = 8.0f, f2 = 78.78f;

    ushort us1 = 5346, us2 = 6437;

    uint un1 = 432344637, un2 = 64762738;

    ulong ul1 = 34234234, ul2 = 673286478326;

    Console.WriteLine("Math.Max Method (Byte, Byte) = " + Math.Max(b1, b2));

    Console.WriteLine("Math.Max Method (Decimal, Decimal) = " + Math.Max(d1, d2));

    Console.WriteLine("Math.Max Method (Double, Double) = " + Math.Max(db1, db2));

    Console.WriteLine("Math.Max Method (Int16, Int16) = " + Math.Max(sh1, sh2));

    Console.WriteLine("Math.Max Method (Int32, Int32) = " + Math.Max(i1, i2));

    Console.WriteLine("Math.Max Method (Int64, lInt64) = " + Math.Max(l1, l2));

    Console.WriteLine("Math.Max Method (SByte, SByte) = " + Math.Max(sb1, sb2));

    Console.WriteLine("Math.Max Method (Single, Single) = " + Math.Max(f1, f2));

    Console.WriteLine("Math.Max Method (UInt16, UInt16) = " + Math.Max(us1, us2));

    Console.WriteLine("Math.Max Method (UInt32, UInt32) = " + Math.Max(un1, un2));

    Console.WriteLine("Math.Max Method (UInt64, UInt64) = " + Math.Max(ul1, ul2));

    }

}

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given two integers A and B, the task is to find the maximum of two numbers using Bitwise Operators.

    Examples:

    Input: A = 40, B = 54
    Output: 54

    Input: A = -1, B = -10
    Output: -1

    Approach: The idea is to use the Bitwise Operator as well as the Right Shift Operator to find the greatest number between two distinct numbers without using any conditional statements( if … ) and Ternary Operator(?: ). Below are the steps:

    • Find the maximum value on the basis of the below expression:

    z = A – B
    i = (z >> 31) & 1
    max = a – (i*z)

    • Subtract two numbers and store it in another variable z.
    • To get the sign of the number obtained after subtraction, apply Right Shift to the variable z and store it in another variable i and then perform Bitwise AND operation on the variable i with 1 to get values in 1 or 0.
    • Perform the following expression to get the largest value among the two given numbers as max = (a – (i * z)).

    Illustration:

    A = 40, B = 54
    z = (A – B) = 40 – 54 = -14
    i = -1 & 1 = 1
    max = a – (i * z) = (40 – (1 * -14)) = 54

    Below is the implementation of the above approach:

    C++

    #include <iostream>

    using namespace std;

    int findMax(int a, int b)

    {

        int z, i, max;

        z = a - b;

        i = (z >> 31) & 1;

        max = a - (i * z);

        return max;

    }

    int main()

    {

        int A = 40, B = 54;

        cout << findMax(A, B);

        return 0;

    }

    C

    #include <stdio.h>

    int findMax(int a, int b)

    {

        int z, i, max;

        z = a - b;

        i = (z >> 31) & 1;

        max = a - (i * z);

        return max;

    }

    int main()

    {

        int A = 40, B = 54;

        printf("%d", findMax(A, B));

        return 0;

    }

    Java

    import java.io.*;

    class GFG {

      public static int findMax(int a, int b)

      {

        int z, i, max;

        z = a - b;

        i = (z >> 31) & 1;

        max = a - (i * z);

        return max;

      }

      public static void main (String[] args)

      {

        int A = 40, B = 54;

        System.out.println(findMax(A, B));

      }

    }

    Python3

    def findmaxx(a, b):

        z = a - b

        i = (z >> 31) & 1

        maxx = a - (i * z)

        return maxx

    A = 40

    B = 54

    print(findmaxx(A, B))

    Javascript

    <script>

    function findMax(a, b)

    {

        var z, i, max;

        z = a - b;

        i = (z >> 31) & 1;

        max = a - (i * z);

        return max;

    }

    var A = 40, B = 54;

    document.write(findMax(A, B));

    </script>

    Time Complexity: O(1)
    Auxiliary Space: O(1)

    Last Updated :
    17 Jan, 2022

    Like Article

    Save Article

    В этом посте будет обсуждаться, как найти минимальное и максимальное число из массива в C#.

    1. Использование Linq

    Простое решение для поиска минимального и максимального значения в последовательности значений — использование Enumerable.Min а также Enumerable.Max методы из System.Linq пространство имен.

    using System;

    using System.Linq;

    public class Example

    {

        public static void Main()

        {

            int[] arr = { 8, 3, 5, 1, 2 };

            Console.WriteLine(“Minimum number is “ + arr.Min());

            Console.WriteLine(“Maximum number is “ + arr.Max());

        }

    }

    Скачать  Выполнить код

    результат:

    Minimum number is -1
    Maximum number is 8

    2. Использование Array.Sort() Метод

    Другой вероятный, но менее рекомендуемый способ найти минимум/максимум массива — отсортировать массив в порядке возрастания. Тогда первый и последний элементы отсортированного массива будут минимальным и максимальным элементом соответственно.

    using System;

    public class Example

    {

        public static void Main()

        {

            int[] arr = { 8, 3, 5, 1, 2 };

            Array.Sort(arr);

            if (arr.Length > 0) {

                Console.WriteLine(“Minimum number is “ + arr[0]);

                Console.WriteLine(“Maximum number is “ + arr[arr.Length 1]);

            }

        }

    }

    Скачать  Выполнить код

    результат:

    Minimum number is -1
    Maximum number is 8

    3. Использование пользовательской процедуры

    Наконец, мы можем написать собственную процедуру для нахождения минимального и максимального числа массива. Идея состоит в том, чтобы пройтись по массиву и отслеживать минимальное или максимальное значение, найденное на данный момент. Вот как будет выглядеть код:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    using System;

    public class Example

    {

        public static int findMin(int[] arr)

        {

            if (arr.Length == 0) {

                throw new Exception(“Array is empty”);

            }

            int min = int.MaxValue;

            foreach (var i in arr) {

                if (i < min) {

                    min= i;

                }

            }

            return min;

        }

        public static int findMax(int[] arr)

        {

            if (arr.Length == 0) {

                throw new Exception(“Array is empty”);

            }

            int max = int.MinValue;

            foreach (var i in arr) {

                if (i > max) {

                    max = i;

                }

            }

            return max;

        }

        public static void Main()

        {

            int[] arr = { 8, 3, 5, 1, 2 };

            Console.WriteLine(“Minimum number is “ + findMin(arr));

            Console.WriteLine(“Maximum number is “ + findMax(arr));

        }

    }

    Скачать  Выполнить код

    результат:

    Minimum number is -1
    Maximum number is 8

    Вот и все, что касается нахождения минимального и максимального числа из массива в C#.

    Спасибо за чтение.

    Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

    Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

    Добавить комментарий