Рубрики
Без рубрики

Понимание слива сорта в Python

В этой статье мы посмотрим на эффективный алгоритм сортировки – слияние сортировки в Python. Алгоритм сортировки слияния используется для сортировки существующих данных в

Автор оригинала: Pankaj Kumar.

Понимание слива сорта в Python

В этой статье мы посмотрим на эффективный алгоритм сортировки – Сортировать в Python Отказ Алгоритм сортировки слияния используется для сортировки существующих данных в порядке возрастания или убывания. Давайте посмотрим, как мы можем использовать алгоритм и внедрить его в Python.

Работа сортировки слияния в Python

Сортировка Merge – это метод сортировки общего назначения, чисто на основе Разделить и завоевать подход Отказ

В методике Divide и Proquer элементы делятся на меньшие части или списки. Затем соответствующая функция применяется к каждой половине основного входного ввода. Кроме того, половины объединяются вместе, чтобы получить результат.

Merge Sortis A Рекурсивная техника При этом несортированные элементы делятся на две половины/части, и функция вызывает сама для распакованных половинок таким образом, чтобы половины следили на рекурсивном разделении на две части до тех пор, пока весь массив не будет отсортирован.

Это рекурсивно называет себя для половинок или подписи, пока она не получит все элементы, разделенные, и что нет дальнейшего разделения I.E. Каждый подсчет содержит 1 (один) элемент Отказ

Затем элементы сортируются с использованием основной методики сравнения и свопа. Наконец, это сливается Все элементы вместе, чтобы получить окончательный отсортированный список элементов данных.

Давайте понять работу слияния в Python с помощью примера;

Рассмотрим список элементов: 11, 31, 7, 41, 101, 56, 77, 2

Пример сортировки слияния

Как уже упоминалось выше, изначально мы разделяем исходный список элементов данных int двух половинок.

Поскольку вышеуказанный оригинальный массив содержит 8 элементов, мы разделяем массив в подбардинг из 4 элементов. Массив держит рекурсивно разделение в подписи, до тех пор, пока не будет получен один элемент на Sub-list I.e. Невозможно больше дальнейшего разделения.

Слияние сортировки элементов данных

Как четко указано, список рекурсивно разделен на две части/половинки до тех пор, пока все элементы не будут разделены как индивидуальный.

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

Результат сортировки слияния после рекурсивной расщепления элементов

Как только элементы разделены, нам необходимо объединить элементы данных таким же образом, как и разделили элементы.

Рассмотрим элементы 11 и 31 Отказ Как находятся в их сортировке, мы объединяем их и объединяем их вместе в массиве. Элементы 7 и 41 Также появляются в их отсортированных местах, поэтому мы также объединяем их.

Теперь, если вы посмотрите на элементы 101 и 56 Нам нужно поменять свои позиции и объединить их вместе. Аналогичным образом, элементы 77 и 2 поменяются в отношении их позиций и объединены вместе.

Объединение и сортировка итерация 1

Принимая его вперед, во второй итерации, мы сравниваем суб-массив двух элементов с другим подпарасителем, и если элементы будут сортированы, мы вообще объединяем подзагонки. Подмассор [11,31] сравнивается с [7,41] и суб-массив [56,101] сравнивается с [2,77] Отказ Поскольку элементы данных не в их отсортированном порядке, их позиции поменяются.

Слияние и сортировка итерация 2

В третьей итерации подразрус из 4 элементов сравнивается с другим подразделением I.e. [7, 11, 31, 41] сравнивается с [2, 56, 77, 101] Отказ Как ясно видно, элементы не находятся в их отсортированных положениях, поэтому элементы поменяются и объединены для получения окончательного отсортированного массива.

Слияние и сортировка итерация 3

Сортировать алгоритм сортировки

Следующие шаги выполняются рекурсивным способом для выполнения сортировки слияния и воспользоваться соответствующими результатами:

  • Найти Средний элемент требуется разделить исходный массив на две части.
  • Разделите оригинальный список на две половины в рекурсивной манере до тех пор, пока каждый подскажет содержит один элемент. I.e. Вызовите функцию Merge_sort () для каждой половины рекурсивно.
  • Проверьте значения данных, если они обнаружены в несортированном порядке, поменяйте элементы и Объедините подписи, чтобы получить оригинальный отсортированный список Отказ

Реализация слияния Сортировать в Python

def merge_sort(inp_arr):
    size = len(inp_arr)
    if size > 1:
        middle = size // 2
        left_arr = inp_arr[:middle]
        right_arr = inp_arr[middle:]

        merge_sort(left_arr)
        merge_sort(right_arr)

        p = 0
        q = 0
        r = 0

        left_size = len(left_arr)
        right_size = len(right_arr)
        while p < left_size and q < right_size:
            if left_arr[p] < right_arr[q]:
              inp_arr[r] = left_arr[p]
              p += 1
            else:
                inp_arr[r] = right_arr[q]
                q += 1
            
            r += 1

       
        while p < left_size:
            inp_arr[r] = left_arr[p]
            p += 1
            r += 1

        while q < right_size:
            inp_arr[r]=right_arr[q]
            q += 1
            r += 1

inp_arr = [11, 31, 7, 41, 101, 56, 77, 2]
print("Input Array:\n")
print(inp_arr)
merge_sort(inp_arr)
print("Sorted Array:\n")
print(inp_arr)

Выход:

Input Array:

[11, 31, 7, 41, 101, 56, 77, 2]
Sorted Array:

[2, 7, 11, 31, 41, 56, 77, 101]

Сложность времени слияния

Сложность времени слияния сорта: O (nlogn)

Заключение

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