Проверить упорядочен ли заданный массив по убыванию

По возрастанию я проверил, а вот по убыванию не пойму как правильно сделать.

        int m = 0;
        int g = 0;
        int d = 0;
        bool up = false;
        bool dn = false;
        Console.Write("Введите колличество элементов в массиве ");
        while (!int.TryParse(Console.ReadLine(), out m) || m <= 0)
            Console.Write("Необходимо ввести целое число!\nВведите число: ");
        int[] a = new int[m];

        for (int i = 0; i < a.Length; i++)
        {
            Console.WriteLine($"Введите элемент массива по индексом {i}");
            while (!int.TryParse(Console.ReadLine(), out m) || m <= 0)
                Console.Write("Необходимо ввести целое число!\nВведите число: ");
            a[i] = m;
            if (g < m)
            {
                g = m;
                up = true;
            }
            else up = false;
        }

        //Array.Reverse(a);
        //for (int i = 0; i < a.Length; i++)
        //{
        //}
        
        if (up)
            Console.WriteLine($"возростатет");
        //if (dn)
        //    Console.WriteLine($"УБВАЕТ");


    }
}

}


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

Автор решения: Павел Ериков

Проще сказать, что изначально последовательность возрастающая, и потом доказать обратное, т.к. для этого достаточно всего лишь найти 2 соседних элемента, которые a[i - 1] >= a[i].

Аналогично с убывающей, сначала говорим, что последовательность убывает и в процессе проверки пытаемся доказать обратное, найдя два соседних элемента, которые a[i - 1] <= a[i]

Вот пример:

//Доказываем, что последовательность не возрастающая
if (i > 0 && a[i - 1] >= a[i])
    up = false;
//И так же не убывающая 
if (i > 0 && a[i - 1] <= a[i])
    dn = false;
→ Ссылка