Рубрики

C # Программа для пересчета числа в массиве | Набор 1 (с использованием сортировки слиянием)

Число инверсий для массива указывает — насколько далеко (или близко) массив от сортировки. Если массив уже отсортирован, то счетчик инверсий равен 0. Если массив отсортирован в обратном порядке, то счетчик инверсий является максимальным.
Формально говоря, два элемента a [i] и a [j] образуют инверсию, если a [i]> a [j] и i

Пример:
Последовательность 2, 4, 1, 3, 5 имеет три инверсии (2, 1), (4, 1), (4, 3).

// C # программа для подсчета инверсий
// в массиве

using System;

using System.Collections.Generic;

  

class GFG {

  

    static int[] arr = new int[] { 1, 20, 6, 4, 5 };

  

    static int getInvCount(int n)

    {

        int inv_count = 0;

  

        for (int i = 0; i < n - 1; i++)

            for (int j = i + 1; j < n; j++)

                if (arr[i] > arr[j])

                    inv_count++;

  

        return inv_count;

    }

  

    // Код драйвера

    public static void Main()

    {

        Console.WriteLine("Number of "

                          + "inversions are "

                          + getInvCount(arr.Length));

    }

}

  
// Этот код предоставлен Sam007

Выход:

Number of inversions are 5

МЕТОД 2 (Улучшенная сортировка слиянием) . Предположим, мы знаем количество инверсий в левой и правой половине массива (пусть это будут inv1 и inv2), какие виды инверсий не учитываются в Inv1 + Inv2? Ответ — инверсии, которые мы должны посчитать на этапе объединения. Поэтому, чтобы получить количество инверсий, нам нужно добавить количество инверсий в левом подмассиве, правом подмассиве и слиянии ().

Пожалуйста, обратитесь к полной статье о инверсии графа в массиве | Установите 1 (используя сортировку слиянием) для более подробной информации!

Рекомендуемые посты:

C # Программа для пересчета числа в массиве | Набор 1 (с использованием сортировки слиянием)

0.00 (0%) 0 votes