Посчитать сложность алгоритма C#

Как правильно посчитать сложность алгоритма? Смотрю все примеры, которые есть на stackoverflow и все равно никак не пойму.

Сам алгоритм С#:

   class Program
{
    static int sum(int mas_kol)
    {
        int sum_arr = 0;
        int[] mas = new int[mas_kol];
        Random rand = new Random();
        for (int i = 0; i < mas.Length; i++)
        {
            mas[i] = rand.Next(-100, 100);
            if ((mas[i] % 2 != 0) && (mas[i] < 0))
                sum_arr += mas[i];
        }
        return sum_arr;
    }

    static void Main(string[] args)
    {
        Console.WriteLine("Введите количество элементов в массиве: ");
        int mas_kol = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Сумма нечетных и отрицательных элементов = " + sum(mas_kol));
    }
}

Как я правильно понял - получается линейная сложность? Но как к такому выводу придти правильно?


Ответы (1 шт):

Автор решения: CrazyElf

У вас в коде один цикл по всем элементам массива. Рекурсии нет, вложенных циклов нет, досрочного выхода из цикла тоже нет. Поэтому сложность O(n) - линейная.

→ Ссылка