Определить количество инверсий (большее значение находится слева от меньшего) в массиве - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Определить количество инверсий в массиве (таких пар элементов, в которых большее значение находится слева от меньшего).

Решение задачи: «Определить количество инверсий (большее значение находится слева от меньшего) в массиве»

textual
Листинг программы
#include <stdio.h>
 
void main()
{
    int N;
    printf("Input N: ");
    scanf("%d", &N);
    int mas[N], i, j, count=0;
    for(i=0; i<N; i++) scanf("%d", &mas[i]);
    for(i=0; i<N-1; i++)
    {
        for(j=i+1; j<N; j++)
        {
            if(mas[i]>mas[j]) count+=1;
        }
    }
    printf("Inver = %d", count);
}

Объяснение кода листинга программы

В этом коде определен входной параметр N типа int (целое число), который запрашивается у пользователя с помощью функции printf и считывается с помощью функции scanf. Затем создается массив типа int с именем mas, размер которого определяется переменной N. Пользователю предлагается ввести значения для каждого элемента массива с помощью функции scanf. Далее, с помощью двух вложенных циклов, происходит сравнение элементов массива и подсчет инверсий (больших значений, находящихся слева от меньших). Инверсией считается каждое вхождение меньшего значения в большее. Наконец, результат подсчета инверсий выводится на экран с помощью функции printf.

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы