Рубрики

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

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

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

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

  

def getInvCount(arr, n):

  

    inv_count = 0

    for i in range(n):

        for j in range(i + 1, n):

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

                inv_count += 1

  

    return inv_count

  
Код водителя

arr = [1, 20, 6, 4, 5]

n = len(arr)

print("Number of inversions are",

              getInvCount(arr, n))

  
# Этот код предоставлен Смитой Динеш Семвал

Выход:

Number of inversions are 5

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

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

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

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

0.00 (0%) 0 votes